Запуск pyttsx3 (espeak) преобразования текста в речь в контейнере докеров создает ужасное качество звука

Я пытаюсь запустить pyttsx3 (который работает на espeak) и создать с ним файлы .mp3 в python3.10.
Проблема в том, что созданные аудиофайлы имеют действительно неслышимое качество звука, что можно увидеть/услышать здесь: https://vocaroo.com/15u2rs6hOJXR
Эта проблема возникает только при сборке приложения в виде образа докера и последующем запуске этого образа с помощью docker run mybot:latest. При локальном запуске приложения все работает нормально

Файл докера, который я использую:

# syntax=docker/dockerfile:1
FROM python:3.10-slim-buster
ENV PATH /usr/local/bin:$PATH
COPY requirements.txt requirements.txt
COPY . /bot
RUN cd /bot
RUN pip3 install -r requirements.txt
RUN apt-get update && apt-get install -y \
    fonts-liberation \
    libasound2 \
    libatk-bridge2.0-0 \
    libatk1.0-0 \
    libatspi2.0-0 \
    libcups2 \
    libdbus-1-3 \
    libdrm2 \
    libgbm1 \
    libgtk-3-0 \
    libnspr4 \
    libnss3 \
    libwayland-client0 \
    libxcomposite1 \
    libxdamage1 \
    libxfixes3 \
    libxkbcommon0 \
    libxrandr2 \
    xdg-utils \
    libu2f-udev \
    libvulkan1 \
    espeak \
    ffmpeg \
    alsa-utils \
    libespeak1 \
    curl
RUN curl -LO  https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN apt-get install -y ./google-chrome-stable_current_amd64.deb
RUN rm google-chrome-stable_current_amd64.deb
WORKDIR /bot
EXPOSE 3308
CMD [ "python3", "appHandler.py", "start", "dev" ]

Нигде не зарегистрировано ошибок или предупреждений.

Кто-нибудь знает, в чем здесь может быть проблема? пока ничего не нашел на эту тему...

🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.


150
1

Ответ:

Решено

Я «исправил» эту проблему и оставлю это здесь на случай, если кто-то еще столкнется с этой проблемой:

Итак, после еще одного дня исследований и проб я понял, почему это так.
Pyttsx3 нужен движок (драйвер) для перевода текста в речь. Он будет использовать стандартный драйвер ОС, если он не указан. Поскольку я работал на OSX, по умолчанию он был NSSpeechSynthesizer, но когда я запустил приложение в докере, ОС изменилась на linux, а драйвер по умолчанию стал espeak.
NSSpeechSynthesizer и espeak имеют огромную разницу в качестве, то есть espeak звучит как пьяный робот.
Невозможно использовать NSSpeechSynthesizer в докере, так как это эксклюзив для OSX.
Поскольку мне совсем не понравился результат espeak, я решил перейти от использования pyttsx3 к использованию AWS polly, который можно найти здесь и который имеет потрясающее качество, прост в использовании и очень дешев для таких маленьких разработчиков, как я.