文本转语音快速入门

您所在的位置:网站首页 语音合成助手有不收费的吗 文本转语音快速入门

文本转语音快速入门

2023-12-10 03:47| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

快速入门:将文本转换为语音 项目 09/03/2023

参考文档包 (NuGet)GitHub 上的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

语音 SDK 以NuGet 包的形式提供并实现了 .NET Standard 2.0。 在本指南后面部分安装语音 SDK。 有关任何要求,请参阅安装语音 SDK。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤创建新的控制台应用程序并安装语音 SDK。

在需要新项目的地方打开命令提示符。 运行此命令以使用 .NET CLI 创建控制台应用程序。 该命令在项目目录中创建Program.cs文件。

dotnet new console

使用 .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 { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY"); static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION"); 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 region values?"); } break; default: break; } } async static Task Main(string[] args) { var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); // The language of the voice that speaks. speechConfig.SpeechSynthesisVoiceName = "en-US-JennyNeural"; 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-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

运行新的控制台应用程序,开始将语音合成到默认扬声器。

dotnet run

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

输入要朗读的一些文本。 例如,键入“我很高兴试用文本转语音”。 选择“Enter”键以收听合成的语音。

Enter some text that you want to speak > I'm excited to try text to speech 备注

此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以从文件中获取文本,如以下指南中所述:

有关基于文件的语音合成以及更精细地控制语音风格、韵律和其他设置的信息,请参阅如何合成语音和语音合成标记语言 (SSML) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档包 (NuGet)GitHub 上的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

语音 SDK 以NuGet 包的形式提供并实现了 .NET Standard 2.0。 在本指南后面部分安装语音 SDK。 有关任何要求,请参阅安装语音 SDK。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤创建新的控制台应用程序并安装语音 SDK。

在Visual Studio Community中创建名为SpeechSynthesis的C++ 控制台项目。

使用 NuGet 包管理器在新项目中安装语音 SDK。

Install-Package Microsoft.CognitiveServices.Speech

将SpeechSynthesis.cpp的内容替换为以下代码:

#include #include #include 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 "SPEECH_REGION" auto speechKey = GetEnvironmentVariable("SPEECH_KEY"); auto speechRegion = GetEnvironmentVariable("SPEECH_REGION"); if ((size(speechKey) == 0) || (size(speechRegion) == 0)) { std::cout Reason == ResultReason::SynthesizingAudioCompleted) { std::cout “方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤新建 GO 模块。

打开想要新模块的控制台窗口,然后新建名为speech-synthesis.go的文件。

将以下代码复制到speech-synthesis.go中:

package main import ( "bufio" "fmt" "os" "strings" "time" "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 synthesizeStartedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Synthesis started.") } func synthesizingHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesizing, audio chunk size %d.\n", len(event.Result.AudioData)) } func synthesizedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesized, audio length %d.\n", len(event.Result.AudioData)) } func cancelledHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Received a cancellation.") } func main() { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speechKey := os.Getenv("SPEECH_KEY") speechRegion := os.Getenv("SPEECH_REGION") audioConfig, err := audio.NewAudioConfigFromDefaultSpeakerOutput() if err != nil { fmt.Println("Got an error: ", err) return } defer audioConfig.Close() speechConfig, err := speech.NewSpeechConfigFromSubscription(speechKey, speechRegion) if err != nil { fmt.Println("Got an error: ", err) return } defer speechConfig.Close() speechConfig.SetSpeechSynthesisVoiceName("en-US-JennyNeural") speechSynthesizer, err := speech.NewSpeechSynthesizerFromConfig(speechConfig, audioConfig) if err != nil { fmt.Println("Got an error: ", err) return } defer speechSynthesizer.Close() speechSynthesizer.SynthesisStarted(synthesizeStartedHandler) speechSynthesizer.Synthesizing(synthesizingHandler) speechSynthesizer.SynthesisCompleted(synthesizedHandler) speechSynthesizer.SynthesisCanceled(cancelledHandler) for { fmt.Printf("Enter some text that you want to speak, or enter empty text to exit.\n> ") text, _ := bufio.NewReader(os.Stdin).ReadString('\n') text = strings.TrimSuffix(text, "\n") if len(text) == 0 { break } task := speechSynthesizer.SpeakTextAsync(text) var outcome speech.SpeechSynthesisOutcome select { case outcome = I'm excited to try text to speech 备注

此快速入门使用 SpeakTextAsync 操作合成你输入的简短文本块。 你还可以从文件中获取文本,如以下指南中所述:

有关基于文件的语音合成以及更精细地控制语音风格、韵律和其他设置的信息,请参阅如何合成语音和语音合成标记语言 (SSML) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档包 (npm)GitHub 上的其他示例库源代码

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

需要先安装适用于 JavaScript 的语音 SDK,然后才能执行其他操作。 如果只是需要用于安装的包名称,请运行 npm install microsoft-cognitiveservices-speech-sdk。 有关安装说明指南,请参阅安装语音 SDK。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到文件输出

按照以下步骤创建用于语音合成的 Node.js 控制台应用程序。

打开想要新项目的控制台窗口,并创建名为SpeechSynthesis.js的文件。

安装适用于 JavaScript 的语音 SDK:

npm install microsoft-cognitiveservices-speech-sdk

将以下代码复制到SpeechSynthesis.js中:

(function() { "use strict"; var sdk = require("microsoft-cognitiveservices-speech-sdk"); var readline = require("readline"); var audioFile = "YourAudioFile.wav"; // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION); const audioConfig = sdk.AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-JennyNeural"; // Create the speech synthesizer. var synthesizer = new sdk.SpeechSynthesizer(speechConfig, audioConfig); var rl = readline.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 === sdk.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(); synthesizer = null; }, function (err) { console.trace("err - " + err); synthesizer.close(); synthesizer = null; }); console.log("Now synthesizing to: " + audioFile); }); }());

在SpeechSynthesis.js中,可以选择将YourAudioFile.wav重命名为另一个输出文件名。

若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

运行控制台应用程序,开始将语音合成到文件:

node SpeechSynthesis.js

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

提供的文本应位于音频文件中:

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) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档包(下载)GitHub 上的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

适用于 Objective-C 的语音 SDK 目前以框架捆绑包的形式分发。 框架同时在 iOS 和 macOS 上支持 Objective-C 和 Swift。

可以在 Xcode 项目中将语音 SDK 作为 CocoaPod 使用,也可以直接下载并手动与其建立链接。 本指南使用 CocoaPod。 根据安装说明中所述,安装 CocoaPod 依赖项管理器。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤在 macOS 应用程序中合成语音。

克隆 Azure-Samples/cognitive-services-speech-sdk 存储库,以获取在 macOS 上的 Objective-C 中使用语音 SDK 来合成音频示例项目。 此存储库还包含 iOS 示例。

在终端中打开下载的示例应用 (helloworld) 的目录。

运行命令 pod install。 此命令生成helloworld.xcworkspace Xcode 工作区,其中包含示例应用以及用作依赖项的语音 SDK。

在 Xcode 中打开 helloworld.xcworkspace 工作区。

打开名为AppDelegate.m的文件,并找到buttonPressed方法,如下所示。

- (void)buttonPressed:(NSButton *)button { // Creates an instance of a speech config with specified subscription key and service region. NSString *speechKey = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_KEY"]; NSString *serviceRegion = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_REGION"]; SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:speechKey region:serviceRegion]; speechConfig.speechSynthesisVoiceName = @"en-US-JennyNeural"; SPXSpeechSynthesizer *speechSynthesizer = [[SPXSpeechSynthesizer alloc] init:speechConfig]; NSLog(@"Start synthesizing..."); SPXSpeechSynthesisResult *speechResult = [speechSynthesizer speakText:[self.textField stringValue]]; // Checks result. if (SPXResultReason_Canceled == speechResult.reason) { SPXSpeechSynthesisCancellationDetails *details = [[SPXSpeechSynthesisCancellationDetails alloc] initFromCanceledSynthesisResult:speechResult]; NSLog(@"Speech synthesis was canceled: %@. Did you set the speech resource key and region values?", details.errorDetails); } else if (SPXResultReason_SynthesizingAudioCompleted == speechResult.reason) { NSLog(@"Speech synthesis was completed"); } else { NSLog(@"There was an error."); } }

在AppDelegate.m中,使用先前为语音资源密钥和区域设置的环境变量。

NSString *speechKey = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_KEY"]; NSString *serviceRegion = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_REGION"];

另外,还可以在AppDelegate.m中包含语音合成语音名称,如下所示:

speechConfig.speechSynthesisVoiceName = @"en-US-JennyNeural";

若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

要使调试输出可见,请选择“视图>”“调试区域>”“激活控制台”。

在菜单中选择“产品”>“运行”,或者选择“播放”按钮,以生成并运行示例代码。

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

在应用中输入一些文本并选择该按钮后,你应该会听到播放的合成音频。

备注

此快速入门使用 SpeakText 操作合成你输入的简短文本块。 你还可以从文件中获取文本,如以下指南中所述:

有关基于文件的语音合成以及更精细地控制语音风格、韵律和其他设置的信息,请参阅如何合成语音和语音合成标记语言 (SSML) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档包(下载)GitHub 上的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

适用于 Swift 的语音 SDK 目前以框架捆绑包的形式分发。 框架同时在 iOS 和 macOS 上支持 Objective-C 和 Swift。

可以在 Xcode 项目中将语音 SDK 作为 CocoaPod 使用,也可以直接下载并手动与其建立链接。 本指南使用 CocoaPod。 根据安装说明中所述,安装 CocoaPod 依赖项管理器。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤在 macOS 应用程序中合成语音。

克隆 Azure-Samples/cognitive-services-speech-sdk 存储库,以获取在 macOS 上的 Swift 中使用语音 SDK 来合成音频示例项目。 此存储库还包含 iOS 示例。

在终端中导航到已下载的示例应用 (helloworld) 的目录。

运行命令 pod install。 此命令生成helloworld.xcworkspace Xcode 工作区,其中包含示例应用以及用作依赖项的语音 SDK。

在 Xcode 中打开 helloworld.xcworkspace 工作区。

打开名为AppDelegate.swift的文件,并找到applicationDidFinishLaunching 和synthesize方法,如下所示。

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-JennyNeural"; 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-JennyNeural";

若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

要使调试输出可见,请选择“视图>”“调试区域>”“激活控制台”。

在菜单中选择“产品”>“运行”,或者选择“播放”按钮,以生成并运行示例代码。

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

在应用中输入一些文本并选择该按钮后,你应该会听到播放的合成音频。

备注

此快速入门使用 SpeakText 操作合成你输入的简短文本块。 你还可以从文件中获取文本,如以下指南中所述:

有关基于文件的语音合成以及更精细地控制语音风格、韵律和其他设置的信息,请参阅如何合成语音和语音合成标记语言 (SSML) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

参考文档包 (PyPi)GitHub 上的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

适用于 Python 的语音 SDK 可用作 Python 包索引 (PyPI) 模块。 适用于 Python 的语音 SDK 与 Windows、Linux 和 macOS 兼容。

在 Windows 上,必须安装适用于你的平台的Microsoft Visual C++ Redistributable for Visual Studio 2015、2017、2019 或 2022。 安装此包可能需要重启。 在 Linux 上,你必须使用 x64 目标体系结构。

安装从 3.7 开始或更高版本的 Python。 有关任何要求,请参阅安装语音 SDK。

设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到扬声器输出

按照以下步骤创建控制台应用程序。

在需要新项目的地方打开命令提示符,并新建名为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 "SPEECH_REGION" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION')) audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) # The language of the voice that speaks. speech_config.speech_synthesis_voice_name='en-US-JennyNeural' 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 region values?")

若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

运行新的控制台应用程序,开始将语音合成到默认扬声器。

python speech_synthesis.py

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

输入要朗读的一些文本。 例如,键入“我很高兴试用文本转语音”。 选择“Enter”键以收听合成的语音。

Enter some text that you want to speak > I'm excited to try text to speech 备注

此快速入门使用 speak_text_async 操作合成你输入的简短文本块。 你还可以从文件中获取文本,如以下指南中所述:

有关基于文件的语音合成以及更精细地控制语音风格、韵律和其他设置的信息,请参阅如何合成语音和语音合成标记语言 (SSML) 概述。 有关将长格式文本合成为语音的信息,请参阅文本转语音的批量合成 API。 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

语音转文本 REST API 参考 | 适用于短音频的语音转文本 REST API 参考 | 有关 GitHub 的其他示例

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境变量。

必须对应用程序进行身份验证才能访问 Azure AI 服务资源。 对于生产,请使用安全的方式存储和访问凭据。 例如,获取语音资源的密钥后,请将其写入运行应用程序的本地计算机上的新环境变量。

提示

请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性。

若要为语音资源密钥设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。

要设置 SPEECH_KEY 环境变量,请将 your-key 替换为你的资源的其中一个密钥。 要设置 SPEECH_REGION 环境变量,请将 your-region 替换为你的资源的其中一个区域。 Windows Linux macOS setx SPEECH_KEY your-key setx SPEECH_REGION your-region

注意

如果你只需要访问当前控制台中的环境变量,则可以使用 set(而不是 setx)来设置环境变量。

添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bashrc,使更改生效。

Bash

编辑 .bash_profile 文件,然后添加环境变量:

export SPEECH_KEY=your-key export SPEECH_REGION=your-region

添加环境变量后,请从控制台窗口运行 source ~/.bash_profile,使更改生效。

Xcode

对于 iOS 和 macOS 开发,可在 Xcode 中设置环境变量。 例如,按照以下步骤在 Xcode 13.4.1 中设置环境变量。

选择“产品”>“方案”>“编辑方案”。 在“运行(调试运行)”页上选择“参数”。 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 SPEECH_KEY,为“值”输入语音资源密钥。

若要为语音资源区域设置环境变量,请执行相同步骤。 将 SPEECH_REGION 设置为资源的区域。 例如 westus。

有关更多配置选项,请参阅 Xcode 文档。

合成到文件

请在命令提示符处运行以下 cURL 命令。 可以选择将output.mp3重命名为另一个输出文件名。

Windows Linux macOS curl --location --request POST "https://%SPEECH_REGION%.tts.speech.microsoft.com/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 "my voice is my passport verify me" --output output.mp3 curl --location --request POST "https://${SPEECH_REGION}.tts.speech.microsoft.com/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 ' my voice is my passport verify me ' > output.mp3 curl --location --request POST "https://${SPEECH_REGION}.tts.speech.microsoft.com/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 ' my voice is my passport verify me ' > output.mp3

重要

确保按照设置环境变量所述设置SPEECH_KEY和SPEECH_REGION环境变量。 如果未设置这些变量,示例会失败并显示错误消息。

提供的文本应当输出到名为output.mp3的音频文件。

若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

有关详细信息,请参阅文本转语音 REST API。

清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

在本快速入门中,你将运行一个应用程序,它将执行文本转语音合成。

提示

可以在 Speech Studio 语音库中试用文本转语音,无需注册或编写任何代码。

先决条件 Azure 订阅 - 免费创建订阅。 在 Azure 门户中创建语音资源。 你的语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关 Azure AI 服务资源的详细信息,请参阅获取资源密钥。 设置环境

请按照以下步骤操作,并参阅语音 CLI 快速入门了解适用于你的平台的其他要求。

运行以下 .NET CLI 命令以安装语音 CLI:

dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI

运行以下命令以配置你的语音资源密钥和区域。 将 SUBSCRIPTION-KEY 替换为语音资源密钥,将 REGION 替换为语音资源区域。

终端 PowerShell spx config @key --set SUBSCRIPTION-KEY spx config @region --set REGION spx --% config @key --set SUBSCRIPTION-KEY spx --% config @region --set REGION 合成到扬声器输出

运行以下命令,将语音合成到默认的扬声器输出。 可以修改要合成的语音和文本。

spx synthesize --text "I'm excited to try text to speech" --voice "en-US-JennyNeural"

如果未设置语音名称,会讲en-US的默认语音。

所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 --voice "es-ES-ElviraNeural",则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,语音服务不会输出合成音频。

备注

通过使用语音合成标记语言 (SSML),可以更精细地控制语音风格、韵律和其他设置。

在以下示例中,SSML 块中提供了语音和风格(excited)。

spx synthesize --ssml "I'm excited to try text to speech"

运行以下命令,了解更多语音合成选项,例如文件输入和输出:

spx help synthesize 清理资源

可以使用 Azure 门户或 Azure 命令行接口 (CLI) 删除创建的语音资源。

后续步骤

详细了解语音合成



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3