如何在Azure Direct Line语音机器人中使用神经语音



我正在尝试更新实验DirectLineSpeech Echo Bot样本的Speak()方法,以使用神经语音,但它似乎不起作用。

这是我试图让它工作的代码-

public IActivity Speak(string message)
{
var activity = MessageFactory.Text(message);
string body = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'>
<voice name='Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural)'>
<mstts:express-as type='chat'>" + $"{message}" + "</mstts:express-as></voice></speak>";
activity.Speak = body;
return activity;
}

这是基于SSML指南中提供的建议

以下是标准T2S供参考:

public IActivity Speak(string message)
{
var activity = MessageFactory.Text(message);
string body = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'>
<voice name='Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)'>" +
$"{message}" + "</voice></speak>";
activity.Speak = body;
return activity;
}

有人能帮我理解它是如何工作的吗?或者我做错了什么?

如果它有助于找到任何限制,我已经在westus2地区的F1免费层部署了机器人作为应用程序服务。

编辑:按照Nicholas的建议,更新代码以使用全名Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural),而不是短名en-US-JessaNeural。但这似乎也无济于事。

神经语音的确切名称是Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural)。但最重要的是,你想使用一种说话风格,使用mstts:express-as

问题是您忘记在xml(xmlns:mstts='https://www.w3.org/2001/mstts'(中添加声明mstts命名空间的块:

"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'>
<voice name='en-US-JessaNeural'>
<mstts:express-as type='chat'>" + $"{message}" + "</mstts:express-as>
</voice>
</speak>";

应为:

"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xmlns:mstts='https://www.w3.org/2001/mstts' xml:lang='en-US'>
<voice name='en-US-JessaNeural'>
<mstts:express-as type='chat'>" + $"{message}" + "</mstts:express-as>
</voice>
</speak>";

最新更新