如何在 Azure Direct Line 语音机器人中使用神经语音
How to use neural voices in Azure Direct Line Speech bot
我正在尝试更新实验性 DirectLineSpeech Echo Bot sample 的 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 Guide
中提供的建议
参考标准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 免费层中将机器人部署为应用程序服务。
编辑:更新代码以使用全名,即。 Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural)
而不是 Nicholas 建议的短名称 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>";
我正在尝试更新实验性 DirectLineSpeech Echo Bot sample 的 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 Guide
中提供的建议参考标准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 免费层中将机器人部署为应用程序服务。
编辑:更新代码以使用全名,即。 Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural)
而不是 Nicholas 建议的短名称 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>";