目前当语音合成标记语言(SSML)被设置为text
属性SpeechSynthesisUtterance
实例位于铬或者火狐浏览器Web 浏览器中,SSML 不会在 *nix 处进行解析,如音频输出所示speechSynthesis.speak()
称呼。
浏览浏览器的源代码speech-dispatcher
似乎是由.speak()
其中spd-say
或espeak
,如果配置为这样做,则可以由 调用speech-dispatcher
。
spd-say
有一个x
选项
-x, --ssml Set SSML mode on (default: off)
espeak
有一个m
选项
-m Interpret SSML markup, and ignore other < > tags
已创建用户配置文件以供speech-dispatcher
使用
spd-conf -u
文档指出,用户配置文件可用于为特定客户端设置参数
4.1.6 参数设置命令
可以使用以下参数设置命令。对于配置和历史客户端,还有用于设置某些其他连接和所有连接的值的函数。下面分别列出它们。
C API 函数:
int spd_set_data_mode(SPDConnection *connection, SPDDataMode mode)
设置语音调度程序数据模式。目前,支持纯文本和 SSML。如果您想要使用索引标记或在文本中包含语音参数的更改,则 SSML 特别有用。mode 是请求的数据模式:
SPD_DATA_TEXT
或SPD_DATA_SSML
。
问题
答案1
另一种通常有效的方法是:重命名二进制文件,使用原始名称编写一个包装器脚本,该脚本调用重命名的二进制文件,并包含您想要的选项。 Hacky,但可能更简单。 (如果您不习惯 shell 编程,请查阅$*
)。
另一种黑客方法是将浏览器二进制文件中的二进制调用名称替换为包装器脚本的名称;这样您就可以保留标准名称。
缺点是,如果您更新浏览器,则必须重做此操作,尽管它可以使用以下脚本grep
进行编写dd
grep -FobUa 'spd-say' browser_binary
echo -n 'spd-wrp' | dd bs=1 of=browser_binary seek=12345 conv=notrunc
其中spd-wrp
是包装脚本的名称,以及12345
grep 找到它的位置。根据您的二进制文件的情况,使用多次出现的变体等。