You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/zh/6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-spee...

4.1 KiB

文本转语音 - 虚拟物联网设备

在本节课程中,您将编写代码,通过语音服务将文本转换为语音。

将文本转换为语音

您在上一节课中使用的语音服务 SDK 可以将语音转换为文本,同样也可以将文本转换回语音。在请求语音时,您需要提供使用的语音,因为语音可以通过多种不同的声音生成。

每种语言都支持一系列不同的声音,您可以通过语音服务 SDK 获取每种语言支持的声音列表。

任务 - 将文本转换为语音

  1. 在 VS Code 中打开 smart-timer 项目,并确保虚拟环境已在终端中加载。

  2. azure.cognitiveservices.speech 包中导入 SpeechSynthesizer,将其添加到现有的导入中:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. say 函数上方,创建一个语音配置以供语音合成器使用:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    这使用了与识别器相同的 API 密钥、位置和语言。

  4. 在其下方添加以下代码以获取语音并将其设置到语音配置中:

    voices = speech_synthesizer.get_voices_async().get().voices
    first_voice = next(x for x in voices if x.locale.lower() == language.lower())
    speech_config.speech_synthesis_voice_name = first_voice.short_name
    

    这会检索所有可用语音的列表,然后找到与正在使用的语言匹配的第一个语音。

    💁 您可以从 Microsoft Docs 上的语言和语音支持文档 获取支持的语音的完整列表。如果您想使用特定的语音,可以移除此函数并将语音名称硬编码为文档中的语音名称。例如:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. 更新 say 函数的内容以生成响应的 SSML

    ssml =  f'<speak version=\'1.0\' xml:lang=\'{language}\'>'
    ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
    ssml += text
    ssml += '</voice>'
    ssml += '</speak>'
    
  6. 在其下方,停止语音识别,播放 SSML然后重新启动识别

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

    在播放文本时停止识别,以避免计时器启动的语音被检测到并发送到 LUIS可能会被解释为设置新计时器的请求。

    💁 您可以通过注释掉停止和重新启动识别的代码来测试这一点。设置一个计时器,您可能会发现语音播报会设置一个新计时器,从而导致新的播报,继而设置新的计时器,如此循环往复!

  7. 运行应用程序,并确保函数应用程序也在运行。设置一些计时器,您会听到语音响应,告诉您计时器已设置,然后在计时器完成时会有另一个语音响应。

💁 您可以在 code-spoken-response/virtual-iot-device 文件夹中找到此代码。

😀 您的计时器程序大获成功!

免责声明
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而导致的任何误解或误读,我们概不负责。