Я пытаюсь запустить 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.
Я «исправил» эту проблему и оставлю это здесь на случай, если кто-то еще столкнется с этой проблемой:
Итак, после еще одного дня исследований и проб я понял, почему это так.
Pyttsx3 нужен движок (драйвер) для перевода текста в речь. Он будет использовать стандартный драйвер ОС, если он не указан. Поскольку я работал на OSX, по умолчанию он был NSSpeechSynthesizer
, но когда я запустил приложение в докере, ОС изменилась на linux, а драйвер по умолчанию стал espeak
. NSSpeechSynthesizer
и espeak
имеют огромную разницу в качестве, то есть espeak
звучит как пьяный робот.
Невозможно использовать NSSpeechSynthesizer в докере, так как это эксклюзив для OSX.
Поскольку мне совсем не понравился результат espeak
, я решил перейти от использования pyttsx3
к использованию AWS polly
, который можно найти здесь и который имеет потрясающее качество, прост в использовании и очень дешев для таких маленьких разработчиков, как я.