Как заставить говорящие часы (через cron и Festival TTS) работать во время воспроизведения музыки

Я перешел на Linux с последних 11 месяцев, я на Ubuntu 15.04, я научился использовать cron для различных задач.

Я использую Cron, чтобы объявлять время через фестиваль tts(используя голос mbrolla) каждый час.

Это команда, которую я использую в cron (она сохраняется как сценарий.sh, а ее путь указан в Cron)

echo "Its" `date "+%l O clock now"` |  festival --tts

Проблема в том, что он не работает во время воспроизведения музыки или видео, однако после остановки или приостановки музыки объявляется время.

Я погуглил и обнаружил, что для того, чтобы иметь множественный доступ к звуковой карте, нужно использовать aoss(alsa-oss), я установил необходимый пакет alsa-oss и изменил команду в соответствии с результатами поиска, подобными этому

echo "Its" `date "+%l O clock now"` | aoss festival --tts

но все равно это не работает, и если я запускаю команду с aoss, выдает ошибку, как показано ниже:

ERROR: ld.so: object '/usr/lib/x86_64-linux-gnu/libaoss.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

Я не знаю, связана ли эта ошибка с этим как-то.

Кто-то в Reddit упомянул, что использует Alsa или Pulse-audio для фестиваля, и указал мне на архивные форумы, где говорится, что для использования Alsa или Pulse-Audio мы должны отредактировать файл ~/.festivalrc или /usr/share/festival/festival.scm. и добавить несколько строк к нему.

Я добавил строки, упомянутые в ссылке, но все же это не решило мою проблему

Поэтому мне нужна помощь от вас, ребята. Пожалуйста, помогите мне исправить это, чтобы Cron объявлял время даже во время воспроизведения музыки или видео.

благодарю вас

2 ответа

Согласно этому ответу: Могу ли я использовать cron, чтобы звонить на вершине часа, как напольные часы? вам нужно экспортировать переменную окружения перед воспроизведением звуков в вашем скрипте cron:

export XDG_RUNTIME_DIR="/run/user/1000"

Используйте gTTS , чтобы получить более естественный голос.

gTTS (Google Text-to-Speech), библиотека Python и инструмент CLI для взаимодействия с API преобразования текста в речь Google Translate. Запишите произнесенные mp3-данные в файл, файлоподобный объект (строку байтов) для дальнейшей обработки звука или stdout.

      XDG_RUNTIME_DIR="/run/user/1000"
@hourly /usr/local/bin/gtts-cli -l en "Hour $(/bin/date +\%l)"  | /usr/bin/play -t mp3 - &> /dev/null
  • Конечно, меняйте текст и код языка по своему желанию.
  • Где 1000 это пользователь $UID/ id -u1.
  • Монтаж: pip install gtts.

Чтобы использовать его встроенный: @hourly export XDG_RUNTIME_DIR="/run/user/1000"; /usr/local/bin/gtts-cli...

Другие вопросы по тегам