1
0
mirror of https://github.com/mbirth/wiki.git synced 2024-09-20 06:33:24 +01:00
wiki.mbirth.de/know-how/software/linux/_posts/2009-02-22-festival.md

53 lines
1.7 KiB
Markdown

---
title: festival Text-To-Speech
layout: default
created: 2009-02-22 00:53:11 +0100
updated: 2009-02-22 00:54:41 +0100
toc: false
tags:
- know-how
- software
- linux
- sound
---
Simultaneous playback
=====================
The `festival` text-to-speech synthesizer seems to use normal ALSA playback instead of PulseAudio. This leads to it
failing when there's already something playing. E.g. if you're listening to music with *Rhythmbox*, *festival* fails
with this message:
Linux: can't open /dev/dsp
To make it use PulseAudio, we can re-route the audio through the `pacat` utility as proposed on [this bugreport](https://bugzilla.redhat.com/show_bug.cgi?id=467531).
Just add these few lines to your `/usr/share/festival/init.scm`:
~~~
(Parameter.set 'Audio_Command "pacat --channels=1 --rate=$SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Required_Format 'raw)
~~~
**Note:** I had to use `raw` as the required format since the `snd` from the bugreport gave me loud noise instead of
speech. `raw` works fine.
Announcing system errors
========================
On [fedorabook.com](http://dailypackage.fedorabook.com/index.php?/archives/42-Productive-Monday-Festival-Speech) I
found this little script which will read every new line from `/var/log/messages`:
{% highlight bash %}
#!/bin/bash
tail -0f /var/log/messages | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
#tail -0f /var/log/syslog | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
#tail -0f /var/log/auth.log | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
#tail -0f /var/log/user.log | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
do
echo $LINE
echo $LINE | festival --tts
sleep 0.75
done
{% endhighlight %}