Microsoft 语音合成器词典无法正常工作
Microsoft Speech Synthesizer Lexicon not working
我按照示例 here 将自定义词典添加到我的语音 SSML 中。然而,它被忽略了。我用自己的词典和样本试了一下。起初样本似乎有效,但当我删除词典时,它仍然扩展为“顺便说一下”,所以它似乎对样本也没有影响。
作为参考,这里是用于创建词典的示例代码
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias>By the way</alias>
</lexeme>
<lexeme>
<grapheme> Benigni </grapheme>
<phoneme> bɛˈniːnji</phoneme>
</lexeme>
</lexicon>
这是示例 SSML(其中忽略了词典)
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="http://www.w3.org/2001/mstts"
xml:lang="en-US">
<voice name="en-US-JennyNeural">
<lexicon uri="MY_PATH_TO/customlexicon.xml"/>
BTW, we will be there probably at 8:00 tomorrow morning.
Could you help leave a message to Robert Benigni for me?
</voice>
</speak>
我已尝试从本地存储以及 Azure 应用服务托管的站点访问词典。我还查看了 Javascript 在 SpeechConfig 或 SpeechSynthesizer 中是否有任何类型的“addLexicon”方法,但我找不到任何东西。任何人都知道为什么这不起作用以及我需要做什么来解决它?
根据 Microsoft 的说法,您本地计算机 上的词典 的路径不起作用。它必须托管在网络上的某个地方。如果您有任何应用程序服务计划,这是非常轻量级的(它只是托管一个 XML 文件),因此您只需创建一个新的应用程序服务来托管它。当然,如果您有其他方法通过 web uri 公开文件,应该也能正常工作。
此外,我在使用 sapi 字母表的托管文件方面遇到了问题。文档中的字母缩写不正确。它应该是 x-microsoft-sapi
,而不仅仅是 sapi
。一旦我更正了我能够同时获得 ipa(这是正确的 ipa
)和 sapi 词典在远程服务器上运行时工作。
我按照示例 here 将自定义词典添加到我的语音 SSML 中。然而,它被忽略了。我用自己的词典和样本试了一下。起初样本似乎有效,但当我删除词典时,它仍然扩展为“顺便说一下”,所以它似乎对样本也没有影响。
作为参考,这里是用于创建词典的示例代码
<?xml version="1.0" encoding="UTF-8"?>
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="ipa" xml:lang="en-US">
<lexeme>
<grapheme>BTW</grapheme>
<alias>By the way</alias>
</lexeme>
<lexeme>
<grapheme> Benigni </grapheme>
<phoneme> bɛˈniːnji</phoneme>
</lexeme>
</lexicon>
这是示例 SSML(其中忽略了词典)
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:mstts="http://www.w3.org/2001/mstts"
xml:lang="en-US">
<voice name="en-US-JennyNeural">
<lexicon uri="MY_PATH_TO/customlexicon.xml"/>
BTW, we will be there probably at 8:00 tomorrow morning.
Could you help leave a message to Robert Benigni for me?
</voice>
</speak>
我已尝试从本地存储以及 Azure 应用服务托管的站点访问词典。我还查看了 Javascript 在 SpeechConfig 或 SpeechSynthesizer 中是否有任何类型的“addLexicon”方法,但我找不到任何东西。任何人都知道为什么这不起作用以及我需要做什么来解决它?
根据 Microsoft 的说法,您本地计算机 上的词典 的路径不起作用。它必须托管在网络上的某个地方。如果您有任何应用程序服务计划,这是非常轻量级的(它只是托管一个 XML 文件),因此您只需创建一个新的应用程序服务来托管它。当然,如果您有其他方法通过 web uri 公开文件,应该也能正常工作。
此外,我在使用 sapi 字母表的托管文件方面遇到了问题。文档中的字母缩写不正确。它应该是 x-microsoft-sapi
,而不仅仅是 sapi
。一旦我更正了我能够同时获得 ipa(这是正确的 ipa
)和 sapi 词典在远程服务器上运行时工作。