文本转语音快速入门 您所在的位置:网站首页 抖音私信文字转语音怎么弄的 文本转语音快速入门

文本转语音快速入门

2023-07-01 06:22| 来源: 网络整理| 查看: 265

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

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

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

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

提示

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

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

语音 SDK 以 NuGet 包的形式提供并实现了 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求。

设置环境变量。

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

提示

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

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

若要设置 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 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

输入要朗读的一些文本。 例如,键入“I'm excited to try text to speech.”按 Enter 键收听合成语音。

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

你现已完成快速入门,下面是一些其他注意事项:

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

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

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

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

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

提示

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

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

语音 SDK 以 NuGet 包的形式提供并实现了 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求。

设置环境变量。

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

提示

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

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

若要设置 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 2022 中创建一个名为 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 I'm excited to try text to speech 备注

你现已完成快速入门,下面是一些其他注意事项:

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

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

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

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

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

提示

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

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

安装 Go 语音 SDK。 请查看 SDK 安装指南以了解更多要求。

设置环境变量。

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

提示

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

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

若要设置 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 文档。

合成到扬声器输出

按照以下步骤创建新的 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 = “方案”>“编辑方案” 在“运行(调试运行)”页上选择“参数” 在“环境变量”下,选择加号 (+) 符号来添加新的环境变量。 为“名称”输入 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.exe 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) 改善合成。 有关将长格式文本合成为语音的信息,请参阅批量合成。 清理资源

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

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

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

提示

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

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

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

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

设置环境变量。

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

提示

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

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

若要设置 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) 改善合成。 有关将长格式文本合成为语音的信息,请参阅批量合成。 清理资源

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

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

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

提示

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

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

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

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

设置环境变量。

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

提示

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

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

若要设置 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) 改善合成。 有关将长格式文本合成为语音的信息,请参阅批量合成。 清理资源

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

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

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

提示

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

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

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

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

安装从 3.7 开始或更高版本的 Python。 首先请查看 SDK 安装指南以了解更多要求

设置环境变量。

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

提示

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

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

若要设置 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 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

输入要朗读的一些文本。 例如,键入“I'm excited to try text to speech.”按 Enter 键收听合成语音。

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

你现已完成快速入门,下面是一些其他注意事项:

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

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

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

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

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

提示

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

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

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

提示

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

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

若要设置 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 门户中创建语音资源。 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。 有关认知服务资源的详细信息,请参阅获取资源密钥。 设置环境

请按照以下步骤操作,并参阅语音 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 块中提供了语音和风格(“兴奋”)。

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

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

spx help synthesize 清理资源

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

后续步骤

详细了解语音合成



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有