Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
语音转文本 REST API 参考 | 用于短音频的语音转文本 REST API 参考 | 更多示例,请访问 GitHub
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
将语音合成到文件中
请在命令提示符处运行以下 cURL 命令。 (可选)可以将 output.mp3 重命名为另一个输出文件名。
curl --location --request POST "https://%SPEECH_REGION%.tts.speech.azure.cn/cognitiveservices/v1" ^
--header "Ocp-Apim-Subscription-Key: %SPEECH_KEY%" ^
--header "Content-Type: application/ssml+xml" ^
--header "X-Microsoft-OutputFormat: audio-16khz-128kbitrate-mono-mp3" ^
--header "User-Agent: curl" ^
--data-raw "<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Female' name='en-US-Ava:DragonHDLatestNeural'>my voice is my passport verify me</voice></speak>" --output output.mp3
重要
请确保设置 SPEECH_KEY 和 SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。
提供的文本应输出到名为 output.mp3 的音频文件。
若要更改语音合成语言,请将 en-US-Ava:DragonHDLatestNeural 替换为另一种受支持的语音。
所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置es-ES-Ximena:DragonHDLatestNeural 如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。
有关详细信息,请参阅文本转语音 REST API。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | Package (PyPi) | GitHub上的附加示例
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
Python的语音 SDK 可用作 Python 包索引(PyPI)模块。 适用于Python的语音 SDK 与 Windows、Linux 和 macOS 兼容。
- 在 Windows 上,为您的平台安装适用于 Visual Studio 2015、2017、2019 和 2022 的 Microsoft Visual C++ Redistributable。 安装此包可能需要重启。
- 在 Linux 上,你必须使用 x64 目标体系结构。
请安装 Python 3.7 或更高版本。 有关任何要求,请参阅安装语音 SDK。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤创建控制台应用程序。
在需要新项目的文件夹中打开命令提示符窗口。 创建名为 speech_synthesis.py 的文件。
运行此命令以安装语音 SDK:
pip install azure-cognitiveservices-speech将以下代码复制到 speech_synthesis.py:
import os import azure.cognitiveservices.speech as speechsdk # This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" # Replace with your own subscription key and endpoint, the endpoint is like : "https://YourServiceRegion.api.cognitive.azure.cn" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), endpoint=os.environ.get('ENDPOINT')) audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) # The neural multilingual voice can speak different languages based on the input text. speech_config.speech_synthesis_voice_name='en-US-Ava:DragonHDLatestNeural' speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config) # Get text from the console and synthesize to the default speaker. print("Enter some text that you want to speak >") text = input() speech_synthesis_result = speech_synthesizer.speak_text_async(text).get() if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted: print("Speech synthesized for text [{}]".format(text)) elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = speech_synthesis_result.cancellation_details print("Speech synthesis canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: if cancellation_details.error_details: print("Error details: {}".format(cancellation_details.error_details)) print("Did you set the speech resource key and endpoint values?")若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。运行新的控制台应用程序,开始将语音合成到默认扬声器。
python speech_synthesis.py重要
请确保设置
SPEECH_KEY和ENDPOINT环境变量。 如果未设置这些变量,示例会失败并显示错误消息。输入要朗读的一些文本。 例如,键入“我对尝试文本转语音非常兴奋”。 选择 Enter 键可听到合成的语音。
Enter some text that you want to speak > I'm excited to try text to speech
注解
选择语音名称
语音名称遵循格式 {locale}-{VoiceName}:{VoiceType},其中:
-
区域设置标识语音的主要语言和区域(例如,美国英语
en-US,西班牙语es-ES) -
VoiceName 是该语音的唯一标识符(例如,
AvaAndrew) -
VoiceType 指示语音技术(例如,
DragonHDLatestNeural对于 HD 神经语音,MultilingualNeural用于多语言语音)
若要查找可用的语音,请:
将音频保存到文件
若要将合成语音保存到文件中,而不是将其播放到扬声器,请在以下文件中 AudioOutputConfig指定文件名:
# Save to a WAV file instead of playing to speaker
audio_config = speechsdk.audio.AudioOutputConfig(filename="output.wav")
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)
speech_synthesis_result = speech_synthesizer.speak_text_async("Hello, world!").get()
若要将音频数据作为字节进行自定义处理(如流式处理或格式转换),请省略 audio_config 参数并访问结果 audio_data 的属性:
# Get audio data as bytes
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=None)
result = speech_synthesizer.speak_text_async("Hello, world!").get()
audio_bytes = result.audio_data # Raw audio bytes
更多语音合成选项
此快速入门使用 speak_text_async 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
Reference 文档 | Package(NuGet) | 更多示例 GitHub
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
语音 SDK 可用作实现 .NET Standard 2.0 的 NuGet 包。 稍后使用控制台安装本指南中的语音 SDK。 有关详细的安装说明,请参阅安装语音 SDK。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤创建控制台应用程序并安装语音 SDK。
在需要新项目的文件夹中打开命令提示符窗口。 运行以下命令,使用 .NET CLI 创建控制台应用程序。
dotnet new console该命令会在项目目录中创建 Program.cs 文件。
使用 .NET CLI 在新项目中安装语音 SDK。
dotnet add package Microsoft.CognitiveServices.Speech将 Program.cs 的内容替换为以下代码。
using System; using System.IO; using System.Threading.Tasks; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; class Program { static void OutputSpeechSynthesisResult(SpeechSynthesisResult speechSynthesisResult, string text) { switch (speechSynthesisResult.Reason) { case ResultReason.SynthesizingAudioCompleted: Console.WriteLine($"Speech synthesized for text: [{text}]"); break; case ResultReason.Canceled: var cancellation = SpeechSynthesisCancellationDetails.FromResult(speechSynthesisResult); Console.WriteLine($"CANCELED: Reason={cancellation.Reason}"); if (cancellation.Reason == CancellationReason.Error) { Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}"); Console.WriteLine($"CANCELED: ErrorDetails=[{cancellation.ErrorDetails}]"); Console.WriteLine($"CANCELED: Did you set the speech resource key and endpoint values?"); } break; default: break; } } async static Task Main(string[] args) { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY") ?? throw new InvalidOperationException("Set the SPEECH_KEY environment variable."); string endpoint = Environment.GetEnvironmentVariable("ENDPOINT") ?? throw new InvalidOperationException("Set the ENDPOINT environment variable."); var speechConfig = SpeechConfig.FromEndpoint(new Uri(endpoint), speechKey); // The neural multilingual voice can speak different languages based on the input text. speechConfig.SpeechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; using (var speechSynthesizer = new SpeechSynthesizer(speechConfig)) { // Get text from the console and synthesize to the default speaker. Console.WriteLine("Enter some text that you want to speak >"); string text = Console.ReadLine(); var speechSynthesisResult = await speechSynthesizer.SpeakTextAsync(text); OutputSpeechSynthesisResult(speechSynthesisResult, text); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } }若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“我很高兴尝试文字转语音”,并且你将 设置为语言,则该文本将被用带有西班牙口音的英语读出。 如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。
运行新的控制台应用程序,开始将语音合成到默认扬声器。
dotnet run重要
请确保设置
SPEECH_KEY和ENDPOINT环境变量。 如果未设置这些变量,示例会失败并显示错误消息。输入要朗读的一些文本。 例如,键入“我对尝试文本转语音非常兴奋”。 选择 Enter 键可听到合成的语音。
Enter some text that you want to speak > I'm excited to try text to speech
注解
选择语音名称
语音名称遵循格式 {locale}-{VoiceName}:{VoiceType},其中:
-
区域设置标识语音的主要语言和区域(例如,美国英语
en-US,西班牙语es-ES) -
VoiceName 是该语音的唯一标识符(例如,
AvaAndrew) -
VoiceType 指示语音技术(例如,
DragonHDLatestNeural对于 HD 神经语音,MultilingualNeural用于多语言语音)
若要查找可用的语音,请:
将音频保存到文件
若要将合成语音保存到 WAV 文件,而不是将其播放给扬声器,请使用 AudioConfig.FromWavFileOutput():
// Save to a WAV file instead of playing to speaker
using var audioConfig = AudioConfig.FromWavFileOutput("output.wav");
using var speechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig);
await speechSynthesizer.SpeakTextAsync("Hello, world!");
若要获取音频数据作为字节进行自定义处理(如流式处理或格式转换),请null传递audioConfig并访问结果AudioData的属性:
// Get audio data as bytes
using var speechSynthesizer = new SpeechSynthesizer(speechConfig, null);
var result = await speechSynthesizer.SpeakTextAsync("Hello, world!");
byte[] audioBytes = result.AudioData; // Raw audio bytes
更多语音合成选项
此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置
创建新文件夹
synthesis-quickstart,并使用以下命令转到快速入门文件夹:mkdir synthesis-quickstart && cd synthesis-quickstart使用以下命令创建
package.json:npm init -y使用以下命令安装适用于 JavaScript 的语音 SDK:
npm install microsoft-cognitiveservices-speech-sdk
检索资源信息
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
将语音合成到文件中
从文件翻译语音:
创建包含以下内容 synthesis.js 的新文件:
import { createInterface } from "readline"; import { SpeechConfig, AudioConfig, SpeechSynthesizer, ResultReason } from "microsoft-cognitiveservices-speech-sdk"; function synthesizeSpeech() { const audioFile = "YourAudioFile.wav"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechConfig = SpeechConfig.fromEndpoint(new URL(ENDPOINT), process.env.SPEECH_KEY); const audioConfig = AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; // Create the speech synthesizer. const synthesizer = new SpeechSynthesizer(speechConfig, audioConfig); const rl = createInterface({ input: process.stdin, output: process.stdout }); rl.question("Enter some text that you want to speak >\n> ", function (text) { rl.close(); // Start the synthesizer and wait for a result. synthesizer.speakTextAsync(text, function (result) { if (result.reason === ResultReason.SynthesizingAudioCompleted) { console.log("synthesis finished."); } else { console.error("Speech synthesis canceled, " + result.errorDetails + "\nDid you set the speech resource key and region values?"); } synthesizer.close(); }, function (err) { console.trace("err - " + err); synthesizer.close(); }); console.log("Now synthesizing to: " + audioFile); }); } synthesizeSpeech();在 synthesis.js中,可以选择将 YourAudioFile.wav 重命名为另一个输出文件名。
若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。运行控制台应用程序,开始将语音合成输出到文件:
node synthesis.js
输出
控制台中应会显示以下输出。 按照提示输入要合成的文本:
Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.
注解
更多语音合成选项
此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
若要设置环境,请安装语音 SDK。 本快速入门中的示例适用于 Java 运行时。
安装 Apache Maven。 然后运行
mvn -v以确认安装成功。在项目的根目录中创建一个 pom.xml 文件,并将以下代码复制到其中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk</artifactId> <version>1.43.0</version> </dependency> </dependencies> </project>安装语音 SDK 和依赖项。
mvn clean dependency:copy-dependencies
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤创建用于语音识别的控制台应用程序。
在同一项目根目录中创建名为 SpeechSynthesis.java 的文件。
将以下代码复制到 SpeechSynthesis.java 中:
import com.microsoft.cognitiveservices.speech.*; import com.microsoft.cognitiveservices.speech.audio.*; import java.net.URI; import java.net.URISyntaxException; import java.util.Scanner; import java.util.concurrent.ExecutionException; public class SpeechSynthesis { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" private static String speechKey = System.getenv("SPEECH_KEY"); private static String endpoint = System.getenv("ENDPOINT"); public static void main(String[] args) throws InterruptedException, ExecutionException, URISyntaxException { SpeechConfig speechConfig = SpeechConfig.fromEndpoint(new URI(endpoint), speechKey); speechConfig.setSpeechSynthesisVoiceName("en-US-Ava:DragonHDLatestNeural"); SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(speechConfig); // Get text from the console and synthesize to the default speaker. System.out.println("Enter some text that you want to speak >"); String text = new Scanner(System.in).nextLine(); if (text.isEmpty()) { return; } SpeechSynthesisResult speechSynthesisResult = speechSynthesizer.SpeakTextAsync(text).get(); if (speechSynthesisResult.getReason() == ResultReason.SynthesizingAudioCompleted) { System.out.println("Speech synthesized to speaker for text [" + text + "]"); } else if (speechSynthesisResult.getReason() == ResultReason.Canceled) { SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.fromResult(speechSynthesisResult); System.out.println("CANCELED: Reason=" + cancellation.getReason()); if (cancellation.getReason() == CancellationReason.Error) { System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode()); System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails()); System.out.println("CANCELED: Did you set the speech resource key and endpoint values?"); } } System.exit(0); } }若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。运行控制台应用程序,将语音合成输出到默认扬声器。
javac SpeechSynthesis.java -cp ".;target\dependency\*" java -cp ".;target\dependency\*" SpeechSynthesis重要
请确保设置
SPEECH_KEY和ENDPOINT环境变量。 如果未设置这些变量,示例会失败并显示错误消息。输入要朗读的一些文本。 例如,键入“我对尝试文本转语音非常兴奋”。 选择 Enter 键可听到合成的语音。
Enter some text that you want to speak > I'm excited to try text to speech
注解
更多语音合成选项
此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | NuGet 包 | 更多的示例在 GitHub 上
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
语音 SDK 可用作实现 .NET Standard 2.0 的 NuGet 包。 稍后在本指南中安装语音 SDK。 有关详细的安装说明,请参阅安装语音 SDK。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤创建控制台应用程序并安装语音 SDK。
在名为 Visual Studio Community
SpeechSynthesis中创建 C++ 控制台项目。将 SpeechSynthesis.cpp 的内容替换为以下代码:
#include <iostream> #include <stdlib.h> #include <speechapi_cxx.h> using namespace Microsoft::CognitiveServices::Speech; using namespace Microsoft::CognitiveServices::Speech::Audio; std::string GetEnvironmentVariable(const char* name); int main() { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" auto speechKey = GetEnvironmentVariable("SPEECH_KEY"); auto endpoint = GetEnvironmentVariable("ENDPOINT"); if (std::string(speechKey).empty() || std::string(endpoint).empty()) { std::cout << "Please set both SPEECH_KEY and ENDPOINT environment variables." << std::endl; return -1; } auto speechConfig = SpeechConfig::FromEndpoint(endpoint, speechKey); // The neural multilingual voice can speak different languages based on the input text. speechConfig->SetSpeechSynthesisVoiceName("en-US-AriaNeural"); auto speechSynthesizer = SpeechSynthesizer::FromConfig(speechConfig); // Get text from the console and synthesize to the default speaker. std::cout << "Enter some text that you want to speak >" << std::endl; std::string text; getline(std::cin, text); auto result = speechSynthesizer->SpeakTextAsync(text).get(); // Checks result. if (result->Reason == ResultReason::SynthesizingAudioCompleted) { std::cout << "Speech synthesized to speaker for text [" << text << "]" << std::endl; } else if (result->Reason == ResultReason::Canceled) { auto cancellation = SpeechSynthesisCancellationDetails::FromResult(result); std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl; if (cancellation->Reason == CancellationReason::Error) { std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl; std::cout << "CANCELED: ErrorDetails=[" << cancellation->ErrorDetails << "]" << std::endl; std::cout << "CANCELED: Did you set the speech resource key and endpoint values?" << std::endl; } } std::cout << "Press enter to exit..." << std::endl; std::cin.get(); } std::string GetEnvironmentVariable(const char* name) { #if defined(_MSC_VER) size_t requiredSize = 0; (void)getenv_s(&requiredSize, nullptr, 0, name); if (requiredSize == 0) { return ""; } auto buffer = std::make_unique<char[]>(requiredSize); (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name); return buffer.get(); #else auto value = getenv(name); return value ? value : ""; #endif }选择 Tools>Nuget 程序包管理器>程序包管理器 Console。 在 程序包管理器 Console 中运行以下命令:
Install-Package Microsoft.CognitiveServices.Speech若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。若要启动默认扬声器的语音合成, 请生成并运行新的控制台应用程序。
重要
请确保设置
SPEECH_KEY和ENDPOINT环境变量。 如果未设置这些变量,示例会失败并显示错误消息。输入要朗读的一些文本。 例如,键入“我对尝试文本转语音非常兴奋”。 选择 Enter 键可听到合成的语音。
Enter some text that you want to speak > I'm excited to try text to speech
注解
更多语音合成选项
此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | Package (Go) | 在 GitHub 上的更多示例
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
语音 SDK 以 Go 包的形式提供。 稍后使用终端安装本指南中的语音 SDK。 有关详细的安装说明,请参阅安装语音 SDK。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤创建 Go 应用程序并安装语音 SDK。
在需要新项目的文件夹中打开终端窗口。 创建名为 main.go 的新文件。
使用 Go CLI 在新项目中安装语音 SDK。
go get github.com/Microsoft/cognitive-services-speech-sdk-go将 main.go 的内容替换为以下代码。
package main import ( "bufio" "fmt" "os" "strings" "github.com/Microsoft/cognitive-services-speech-sdk-go/audio" "github.com/Microsoft/cognitive-services-speech-sdk-go/common" "github.com/Microsoft/cognitive-services-speech-sdk-go/speech" ) func outputSpeechSynthesisResult(result *speech.SpeechSynthesisResult, text string) { switch result.Reason { case common.SynthesizingAudioCompleted: fmt.Printf("Speech synthesized for text: [%s]\n", text) case common.Canceled: cancellation, err := speech.NewCancellationDetailsFromSpeechSynthesisResult(result) if err != nil { fmt.Println("Got an error: ", err) return } fmt.Printf("CANCELED: Reason=%d\n", cancellation.Reason) if cancellation.Reason == common.Error { fmt.Printf("CANCELED: ErrorCode=%d\n", cancellation.ErrorCode) fmt.Printf("CANCELED: ErrorDetails=[%s]\n", cancellation.ErrorDetails) fmt.Println("CANCELED: Did you set the speech resource key and endpoint values?") } default: } } func main() { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" speechKey := os.Getenv("SPEECH_KEY") endpoint := os.Getenv("ENDPOINT") if speechKey == "" || endpoint == "" { fmt.Println("Missing required environment variables. Set SPEECH_KEY and ENDPOINT.") return } speechConfig, err := speech.NewSpeechConfigFromEndpointWithSubscription(endpoint, speechKey) if err != nil { fmt.Println("Got an error: ", err) return } defer speechConfig.Close() // The neural multilingual voice can speak different languages based on the input text. speechConfig.SetSpeechSynthesisVoiceName("en-US-Ava:DragonHDLatestNeural") audioConfig, err := audio.NewAudioConfigFromDefaultSpeakerOutput() if err != nil { fmt.Println("Got an error: ", err) return } defer audioConfig.Close() speechSynthesizer, err := speech.NewSpeechSynthesizerFromConfig(speechConfig, audioConfig) if err != nil { fmt.Println("Got an error: ", err) return } defer speechSynthesizer.Close() fmt.Println("Enter some text that you want to speak >") reader := bufio.NewReader(os.Stdin) text, _ := reader.ReadString('\n') text = strings.TrimSpace(text) if text == "" { fmt.Println("Input text cannot be empty.") return } outcome := <-speechSynthesizer.SpeakTextAsync(text) defer outcome.Close() if outcome.Error != nil { fmt.Println("Got an error: ", outcome.Error) return } result := outcome.Result defer result.Close() outputSpeechSynthesisResult(result, text) fmt.Println("Press any key to exit...") reader.ReadString('\n') }若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“我很高兴尝试文字转语音”,并且你将 设置为语言,则该文本将被用带有西班牙口音的英语读出。 如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。
运行以下命令,创建链接到GitHub上托管的语音 SDK 组件的
go.mod文件:go mod init captioning go get github.com/Microsoft/cognitive-services-speech-sdk-go生成 GO 模块。
go build运行新的控制台应用程序,开始将语音合成到默认扬声器。
go run main.go重要
请确保设置
SPEECH_KEY和ENDPOINT环境变量。 如果未设置这些变量,示例会失败并显示错误消息。输入要朗读的一些文本。 例如,键入“我对尝试文本转语音非常兴奋”。 按 Enter 键收听合成语音。
Enter some text that you want to speak > I'm excited to try text to speech
注解
更多语音合成选项
本快速入门使用 SpeakText 函数合成输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | 软件包(下载) | GitHub上的更多示例
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
适用于 Swift 的语音 SDK 目前以框架捆绑包的形式分发。 框架同时在 iOS 和 macOS 上支持 Objective-C 和 Swift。
可在 Xcode 项目中将语音 SDK 用作 CocoaPod,也可以直接下载并手动与其建立链接。 本指南使用 CocoaPod。 根据安装说明中所述,安装 CocoaPod 依赖项管理器。
设置环境变量
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
创建应用程序
按照以下步骤在 macOS 应用程序中合成语音。
克隆
Azure-Samples/cognitive-services-speech-sdk 存储库,以获取在 macOS 上使用语音 SDK 通过 Swift 合成音频的示例项目 。 此存储库还包含 iOS 示例。在终端中导航到已下载的示例应用 (
helloworld) 的目录。运行
pod install命令。 此命令生成一个helloworld.xcworkspaceXcode 工作区,其中包含示例应用以及用作依赖项的语音 SDK。在 Xcode 中打开
helloworld.xcworkspace工作区。打开名为 AppDelegate.swift 的文件,并找到 和
applicationDidFinishLaunching方法,如下所示。import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate, NSTextFieldDelegate { var textField: NSTextField! var synthesisButton: NSButton! var inputText: String! var sub: String! var region: String! @IBOutlet weak var window: NSWindow! func applicationDidFinishLaunching(_ aNotification: Notification) { print("loading") // load subscription information sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"] inputText = "" textField = NSTextField(frame: NSRect(x: 100, y: 200, width: 200, height: 50)) textField.textColor = NSColor.black textField.lineBreakMode = .byWordWrapping textField.placeholderString = "Type something to synthesize." textField.delegate = self self.window.contentView?.addSubview(textField) synthesisButton = NSButton(frame: NSRect(x: 100, y: 100, width: 200, height: 30)) synthesisButton.title = "Synthesize" synthesisButton.target = self synthesisButton.action = #selector(synthesisButtonClicked) self.window.contentView?.addSubview(synthesisButton) } @objc func synthesisButtonClicked() { DispatchQueue.global(qos: .userInitiated).async { self.synthesize() } } func synthesize() { var speechConfig: SPXSpeechConfiguration? do { try speechConfig = SPXSpeechConfiguration(subscription: sub, region: region) } catch { print("error \(error) happened") speechConfig = nil } speechConfig?.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; let synthesizer = try! SPXSpeechSynthesizer(speechConfig!) let result = try! synthesizer.speakText(inputText) if result.reason == SPXResultReason.canceled { let cancellationDetails = try! SPXSpeechSynthesisCancellationDetails(fromCanceledSynthesisResult: result) print("cancelled, error code: \(cancellationDetails.errorCode) detail: \(cancellationDetails.errorDetails!) ") print("Did you set the speech resource key and region values?"); return } } func controlTextDidChange(_ obj: Notification) { let textFiled = obj.object as! NSTextField inputText = textFiled.stringValue } }在 AppDelegate.m 中,使用先前为语音资源密钥和区域设置的环境变量。
sub = ProcessInfo.processInfo.environment["SPEECH_KEY"] region = ProcessInfo.processInfo.environment["SPEECH_REGION"](可选)在 AppDelegate.m 中,加入语音合成语音名称,如下所示:
speechConfig?.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural";若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。要使调试输出可见,请选择“视图”“调试区域”>“激活控制台”。
若要生成并运行示例代码,在菜单中选择“产品”“运行”,或者选择“播放”按钮>。
重要
请确保设置 SPEECH_KEY 和 SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。
在应用中输入一些文本并选择该按钮后,你应该会听到播放的合成音频。
注解
更多语音合成选项
此快速入门使用 SpeakText 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
使用 Azure 语音,可以运行一个应用程序,该应用程序合成类似人类的声音来读取文本。 可以更改语音,输入要说出的文本,然后在计算机的扬声器上收听输出。
提示
可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- 一个Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置
创建新文件夹
synthesis-quickstart,并使用以下命令转到快速入门文件夹:mkdir synthesis-quickstart && cd synthesis-quickstart使用以下命令创建
package.json:npm init -y使用以下命令将
package.json更新为 ECMAScript:npm pkg set type=module使用以下命令安装适用于 JavaScript 的语音 SDK:
npm install microsoft-cognitiveservices-speech-sdk需要安装 Node.js 类型定义以避免 TypeScript 错误。 运行下面的命令:
npm install --save-dev @types/node
检索资源信息
需要对应用程序进行身份验证才能访问Azure AI 服务。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们建议使用 Microsoft Entra ID 来进行 管理标识对 Azure 资源的身份验证,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure 密钥保管库中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure 密钥保管库的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务请求进行身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
将语音合成到文件中
从文件翻译语音:
创建包含以下内容 synthesis.ts 的新文件:
import { createInterface } from "readline"; import { SpeechConfig, AudioConfig, SpeechSynthesizer, ResultReason, SpeechSynthesisResult } from "microsoft-cognitiveservices-speech-sdk"; function synthesizeSpeech(): void { const audioFile = "YourAudioFile.wav"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechConfig: SpeechConfig = SpeechConfig.fromEndpoint(new URL(process.env.ENDPOINT!), process.env.SPEECH_KEY!); const audioConfig: AudioConfig = AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-Ava:DragonHDLatestNeural"; // Create the speech synthesizer. const synthesizer: SpeechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig); const rl = createInterface({ input: process.stdin, output: process.stdout }); rl.question("Enter some text that you want to speak >\n> ", function (text: string) { rl.close(); // Start the synthesizer and wait for a result. synthesizer.speakTextAsync(text, function (result: SpeechSynthesisResult) { if (result.reason === ResultReason.SynthesizingAudioCompleted) { console.log("synthesis finished."); } else { console.error("Speech synthesis canceled, " + result.errorDetails + "\nDid you set the speech resource key and region values?"); } synthesizer.close(); }, function (err: string) { console.trace("err - " + err); synthesizer.close(); }); console.log("Now synthesizing to: " + audioFile); }); } synthesizeSpeech();在 synthesis.ts中,可以选择将 YourAudioFile.wav 重命名为另一个输出文件名。
若要更改语音合成语言,请将
en-US-Ava:DragonHDLatestNeural替换为另一种受支持的语音。所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置
es-ES-Ximena:DragonHDLatestNeural如果语音使用的不是输入文本的语言,则语音服务不会输出合成的音频。创建
tsconfig.json文件以转译 TypeScript 代码,然后复制以下 ECMAScript 代码。{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }从 TypeScript 转译到 JavaScript。
tsc如果成功,此命令不应生成任何输出。
运行控制台应用程序,开始将语音合成输出到文件:
node synthesis.js
输出
控制台中应会显示以下输出。 按照提示输入要合成的文本:
Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.
注解
更多语音合成选项
此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以使用文件中的长格式文本,并更好地控制语音风格、韵律和其他设置。
- 请参阅如何合成语音和语音合成标记语言 (SSML) 概述,了解文件中的语音合成以及如何才能更好地控制语音样式、音调和其他设置。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。