如何为Microsoft Azure文本转语音语音配置不同语音风格?
解决Azure文本转语音无法应用语音风格的问题
- 问题出在配置方式错误:
speech_config不存在speech_synthesis_voice_style这个属性,直接设置不会生效;且speak_text_async仅支持纯文本输入,无法解析语音风格这类高级参数。 - 正确做法是用**SSML(语音合成标记语言)**定义语音风格,Azure文本转语音的高级语音特性(风格、语调等)都需要通过SSML实现。
修正后的代码示例:
import azure.cognitiveservices.speech as speechsdk speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region) speech_config.speech_synthesis_voice_name = "en-US-DavisNeural" # 构造包含语音风格的SSML ssml = """ <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US"> <voice name="en-US-DavisNeural"> <mstts:express-as style="shouting"> Hi, this is Davis </mstts:express-as> </voice> </speak> """ speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config) # 使用SSML专用的合成方法 result = speech_synthesizer.speak_ssml_async(ssml).get()
- 额外注意事项:
- 确认所选语音支持目标风格,比如
en-US-DavisNeural支持shouting、cheerful等风格,可通过Azure语音服务的语音列表查看具体支持特性。 - SSML必须包含正确的命名空间声明,否则风格设置不会生效。
- 确认所选语音支持目标风格,比如
内容的提问来源于stack exchange,提问作者Grawlix
相关产品推荐
相关产品推荐

