![如何更改 Ubuntu 中 Firefox Reader View(讲述人)使用的语音?](https://linux22.com/image/895685/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20Ubuntu%20%E4%B8%AD%20Firefox%20Reader%20View%EF%BC%88%E8%AE%B2%E8%BF%B0%E4%BA%BA%EF%BC%89%E4%BD%BF%E7%94%A8%E7%9A%84%E8%AF%AD%E9%9F%B3%EF%BC%9F.png)
答案1
我设法将festival
语音设置为默认火狐。
为了做到这一点,我们需要更改文件上的某些配置/etc/speech-dispatcher/speechd.conf
。但首先,我需要解释一下它的基本工作原理。我们总是可以使用以下speech-dispatcher
命令查看默认使用的语音spd-say
:
spd-say "Hello. How are you?"
开启后Ubuntu
,默认自带的文本转语音 (TTS) 语音speech-dispatcher
是说话。因此,当我们使用另一个命令时,我们会听到完全相同的声音:
espeak "Hello. How are you?"
发生这种情况是因为spd-say
只是使用espeak
语音作为输出。Firefox 也一样,它使用配置的任何语音speech-dispatcher
作为输出来读取网页阅读器视图模式(Ctrl+Alt+R
)。
因此,我们需要做的是改变命令中输出的声音spd-say
,一旦我们这样做了,火狐也将使用不同的TTS voice
作为默认设置。我将描述使其与festival
语音一起工作的过程,但我相信如果你想运行不同的,过程是相同的TTS voice
。首先,我们需要安装节日:
sudo apt-get install festival speech-dispatcher-festival
我们可以在命令行中输入以下命令来测试它的声音:
echo "Hello. How are you?" | festival --tts
现在我们需要修改文件speechd.conf
。因此我们sudo vi /etc/speech-dispatcher/speechd.conf
在终端上输入,在第 205 行左右我们会看到以下注释配置:
#AddModule "espeak" "sd_espeak" "espeak.conf"
AddModule "festival" "sd_festival" "festival.conf"
#AddModule "flite" "sd_flite" "flite.conf"
#AddModule "ivona" "sd_ivona" "ivona.conf"
#AddModule "pico" "sd_pico" "pico.conf"
#AddModule "espeak-generic" "sd_generic" "espeak-generic.conf"
#AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf"
#AddModule "swift-generic" "sd_generic" "swift-generic.conf"
#AddModule "epos-generic" "sd_generic" "epos-generic.conf"
#AddModule "dtk-generic" "sd_generic" "dtk-generic.conf"
#AddModule "pico-generic" "sd_generic" "pico-generic.conf"
#AddModule "ibmtts" "sd_ibmtts" "ibmtts.conf"
#AddModule "cicero" "sd_cicero" "cicero.conf"
# DO NOT REMOVE the following line unless you have
# a specific reason -- this is the fallback output module
# that is only used when no other modules are in use
#AddModule "dummy" "sd_dummy" ""
# The output module testing doesn't actually connect to anything. It
# outputs the requested commands to standard output and reads
# responses from stdandard input. This way, Speech Dispatcher's
# communication with output modules can be tested easily.
# AddModule "testing"
# The DefaultModule selects which output module is the default. You
# must use one of the names of the modules loaded with AddModule.
#DefaultModule espeak
DefaultModule festival
这里需要做两处修改:
- 取消注释该行
AddModule "festival" "sd_festival" "festival.conf"
- 添加行
DefaultModule festival
我们需要festival
以服务器身份运行才能将speech-dispatcher
其用作默认服务器。我们可以通过在使用该命令时打开的文件末尾添加以下行来实现这一点sudo crontab -e
:
@reboot /usr/bin/festival --server
现在完成了!!重启后系统火狐并将spd-say
使用festival
语音作为输出。
附加信息
我相信让新声音发挥作用的程序Firefox
总是相同的:
取消注释我们安装的新 TTS 语音模块(
/etc/speech-dispatcher/speechd.conf
)。为我们想要的 TTS 语音设置一条新的默认线路(
/etc/speech-dispatcher/speechd.conf
)。在文件夹内的文件指定的端口上运行服务器
/etc/speech-dispatcher/modules/
。
引起我注意的是,有一个模块用于伊沃娜那里的声音。Ivona 是一款专有产品,目前使用它的唯一方式(据我所知)是作为现收现付服务但AWS
它的声音确实很好,听起来很自然。
该文件/etc/speech-dispatcher/modules/ivona.conf
配置为监听端口 9123 上的服务器。我认为也许有一种方法可以运行本地服务器,使用我的AWS APIs
(我不确定,但也许使用这已经开发的 Node.js 应用程序)...如果这是可能的,那就意味着也可以在 Ubuntu 上运行 Ivona作为系统的默认语音,并因此使用它reader view mode
与火狐。虽然我现在不知道该怎么做,但这看起来是一个有趣的可能性。
答案2
Firefox 阅读器模式的叙述功能所使用的声音取决于您运行它的平台。在 Linux 上,Firefox 将使用speech-dispatcher
将文本渲染为人工语音。
因此,您在语音调度程序设置 ( ) 中配置的任何内容/etc/speech-dispatcher/speechd.conf
都应被 Firefox 接收和使用。语音调度程序有多种引擎和声音可用,其中一些可以通过 Ubuntu 软件包安装,例如speech-dispatcher-espeak-ng
或speech-dispatcher-festival
。
在 Firefox 阅读器 GUI 中选择语音/语言的支持有限,但大多数设置必须在 OS 端(即speechd.conf
Linux)进行。
about:config
如果您搜索“narrate”,则可以通过对话框获得一些设置:
我在和中尝试了很多不同的设置,about:config
但speechd.conf
除了 Ubuntu 自带的默认设置外,其他设置都不起作用。我的感觉是 Firefox 和语音调度程序之间的界面不太稳定,但也许你在尝试时会更幸运。
这家伙:https://bbs.archlinux.org/viewtopic.php?id=217411在 Archlinux 上配置使用 festival 作为输出似乎更成功。我尝试在 Ubuntu 18.04 上重现此问题,但无法让 Firefox 运行。
答案3
谢谢拉斐尔·穆伊纳尔斯克回答启动我的问题。以下是我所做的
安装依赖项
apt install festival speech-dispatcher-festival festvox-{rablpc16k,kallpc16k,kdlpc16k} sox
festvox-{rablpc16k,kallpc16k,kdlpc16k}
语音语言是英语吗sox
,没有它,只有部分文本被读取
编辑配置
sudo vim /etc/speech-dispatcher/speechd.conf
禁用espeak
相关配置并启用festival
一个
#AddModule "espeak-ng" "sd_espeak-ng" "espeak-ng.conf"
AddModule "festival" "sd_festival" "festival.conf"
#DefaultModule espeak-ng
DefaultModule festival
启动festival
服务器
如果没有它,我只得到一些句法。
/usr/bin/festival --server
重启 Firefox
然后进入阅读器视图模式并尝试一下。
答案4
为了右声道(我认为 Linux 上最好的离线语音):
安装:
sudo add-apt-repository ppa:linvinus/rhvoice sudo apt-get install rhvoice speech-dispatcher-rhvoice rhvoice-english
编辑
/etc/speech-dispatcher/speechd.conf
:- 取消注释:
AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"
- 添加:
DefaultModule rhvoice
- 取消注释:
测试:
spd-say "Hello. How are you?"
可能需要重新启动系统/Firefox。