语音转文字-虚拟IoT设备


文档摘要

语音转文字 - 虚拟IoT设备 在本课程的这一部分中,您将编写代码以使用语音服务将文本转换为语音。 将文本转换为语音 您在上一课中用于将语音转换为文本的语音服务SDK也可以用来将文本转换回语音。当请求语音时,您需要提供要使用的语音,因为可以使用各种不同的语音生成语音。 每种语言都支持一系列不同的语音,您可以从语音服务SDK获取每种语言的支持语音列表。 任务 - 将文本转换为语音 在VS Code中打开 项目,并确保虚拟环境已加载到终端中。 通过将其添加到现有导入中,从 包中导入 : 在 函数上方,创建一个语音配置以与语音合成器一起使用: 这使用了与识别器相同的应用程序密钥、位置和语言。

语音转文字 - 虚拟IoT设备

在本课程的这一部分中,您将编写代码以使用语音服务将文本转换为语音。

将文本转换为语音

您在上一课中用于将语音转换为文本的语音服务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)

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

  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文件夹中找到此代码。

您的计时器程序成功了!

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


发布者: 作者: 转发
评论区 (0)
U