3

我目前已经安装并配置了festival 2.4。

这是我在做什么:

我首先使用./bin/festival进入节日提示。
然后做(SayText "test")什么应该让 tts 说出单词 test

现在,当我使用存储库中的 apt-get 安装了节日 2.1 时,此命令按预期工作,它显示“测试”
但是当从手动构建的节日 2.4 运行时,它没有报告错误,但也没有声音。我使用了设置参数命令并尝试了每种音频方法,还尝试了设置参数命令,Audio_Device并尝试了我系统上 /dev/ 和 /dev/snd/ 中的许多设备,但均无济于事。

请注意,oss-compat 已安装,我在某处看到它作为解决方案列出,并且从前一段时间我构建 cmu sphinx 时就已经安装了它。

我的问题是 apt-get 在做什么,而我不是。我已经在这里待了大约 12 个小时,所以欢迎提出任何想法。

更新:我已经使用 strace 来监控节日正在向系统发出的呼叫,试图找出导致这种情况的原因,这是我想出的:

我的系统连接了多个音频设备,主板上的集成音频,nvidia卡的hdmi输出,以及我暂时使用的usb音频设备。ls /dev/显示三个音频设备,如预期的那样/dev/audio/dev/audio2/dev/audio3。设置节使用前两个和(Parameter.set 'Audio_Device "/dev/audio")以前一样,没有错误,也没有声音。但是,当使用第三个设备时,/dev/audio3Linux: can't open /dev/audio3对上述 strace 进行了进一步调查,我发现了这一点:

open("/dev/audio3", O_WRONLY) = -1 EBUSY (Device or resource busy)

我四处搜索了一下,我能找到的唯一提到的这个错误是针对相关人员所做的任何特殊情况。

4

2 回答 2

4

您只需要配置 Pulseaudio。将这些行添加到~/.festivalrc文件末尾,或添加到/usr/share/festival/festival.scm

(Parameter.set 'Audio_Required_Format 'aiff)
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "paplay $FILE --client-name=Festival --stream-name=Speech")
于 2017-03-05T22:34:46.453 回答
0

我找到了问题的解决方案。借助来自 strace 的信息,只需追踪阻止我访问音频设备的原因即可。

fuser -fv /dev/snd/* /dev/dsp* /dev/audio* 将有效地向您展示访问系统上任何音频设备的任何内容。它表明pulseaudio正在访问/dev/snd/control****,而不是 audio3,但仍然值得一试。然后我跑去pulseaudio -k杀死pulseaudio。在那之后,我可以听到节日。

于 2017-03-05T18:50:16.407 回答