总的来说,我对 Android 的默认文本转语音引擎(即 com.svox.pico)印象深刻。正如预期的那样,它会误读一些单词(就像我一样),因此偶尔需要一些发音指导。因此,我想知道以语音方式拼出 pico TTS 引擎错误发音的那些单词的最佳实践。
例如,恰恰拉卡鸟的正确发音是 CHAH-chah-LAH-kah。以下是 TTS 引擎产生的内容:
mTts.speak("Chachalaca", TextToSpeech.QUEUE_ADD, null); // output: chuh-KAL-uh-KUH
mTts.speak("CHAH-chah-LAH-kah", TextToSpeech.QUEUE_ADD, null); // output: CHAH-chah-EL-AY-AYCH-dash-kuh
mTts.speak("CHAHchahLAHkah", TextToSpeech.QUEUE_ADD, null); // output: CHA-chah-LAH-ka
mTts.speak("CHAH chah LOCKah", TextToSpeech.QUEUE_ADD, null); // output: CHAH-chah-LAH-kah
这是我的问题。
- 是否有 Android TTS 引擎识别的标准拼音?
- 如果没有,是否有一些用于制作自定义发音拼写的一般规则,使拼写在未来的 TTS 引擎/版本中更有可能是正确的?
- Android TTS 引擎似乎忽略了文本大小写。指定重点的最佳方式是什么?
顺便说一句,这是 TTS 引擎写入 logcat 的内容:
V/TtsService(294): TTS 处理: CHAH chah LOCKah
V/TtsService(294): TtsService.setLanguage(eng, USA, )
I/SVOX Pico Engine(294): 语言已经加载 (en-US == en-US )
I/SynthProxy(294):将语速设置为 100
I/SynthProxy(294):将音调设置为 100
[更新]
我尝试将 XML 文档传递给 TextToSpeech.speak(),如下所示:
String text = "<?xml version=\"1.0\"?>" +
"<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xsi:schemaLocation=\"http://www.w3.org/2001/10/synthesis " +
"http://www.w3.org/TR/speech-synthesis/synthesis.xsd\" " +
"xml:lang=\"en-US\">" +
"That is a big car! " +
"That <emphasis>is</emphasis> a big car! " +
"That is a <emphasis>big</emphasis> car! " +
"That is a huge bank account! " +
"That <emphasis level=\"strong\">is</emphasis> a huge bank account! " +
"That is a <emphasis level=\"strong\">huge</emphasis> bank account!" +
"</speak>";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);
正如Android Eve 所建议的那样,TTS 引擎只读取XML 正文(即关于大型汽车和庞大银行账户的评论)。我没有意识到 TTS 引擎能够解析 XML 文档。但是,我在 TTS 输出中没有听到任何强调。
[更新 2]
我在这里将问题简化为 Android TTS 是否支持语音合成标记语言。