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

快速入门:将文本转换为语音

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

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

提示

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

先决条件

设置环境

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

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

    dotnet new console
    
  2. 使用 .NET CLI 在新项目中安装语音 SDK。

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. 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();
        }
    }
    
  4. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

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

dotnet run

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__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

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

注解

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

  1. 在 Visual Studio Community 2022 中创建一个名为 SpeechSynthesis 的新 C++ 控制台项目。

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

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. 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 "SPEECH_REGION"
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        if ((size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set both SPEECH_KEY and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        // The language of the voice that speaks.
        speechConfig->SetSpeechSynthesisVoiceName("en-US-JennyNeural");
    
        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 region 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
    }  
    
  4. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

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

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__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

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

注解

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

  1. 在需要新模块的地方打开命令提示符,并创建名为 speech-synthesis.go 的新文件。

  2. 将以下代码复制到 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 = <-task:
    		case <-time.After(60 * time.Second):
    			fmt.Println("Timed out")
    			return
    		}
    		defer outcome.Close()
    		if outcome.Error != nil {
    			fmt.Println("Got an error: ", outcome.Error)
    			return
    		}
    
    		if outcome.Result.Reason == common.SynthesizingAudioCompleted {
    			fmt.Printf("Speech synthesized to speaker for text [%s].\n", text)
    		} else {
    			cancellation, _ := speech.NewCancellationDetailsFromSpeechSynthesisResult(outcome.Result)
    			fmt.Printf("CANCELED: Reason=%d.\n", cancellation.Reason)
    
    			if cancellation.Reason == common.Error {
    				fmt.Printf("CANCELED: ErrorCode=%d\nCANCELED: ErrorDetails=[%s]\nCANCELED: Did you set the speech resource key and region values?\n",
    					cancellation.ErrorCode,
    					cancellation.ErrorDetails)
    			}
    		}
    	}
    }                                                
    
  3. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

运行以下命令以创建 go.mod 文件并使其链接到 GitHub 上托管的组件:

go mod init speech-synthesis
go get github.com/Microsoft/cognitive-services-speech-sdk-go

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__REGION 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

现在生成并运行代码:

go build
go run speech-synthesis

清理资源

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

参考文档 | GitHub 上的其他示例

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

提示

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

先决条件

设置环境

需要先安装语音 SDK,然后才能执行其他操作。 本快速入门中的示例适用于 Java 运行时

  1. 安装 Apache Maven。 然后运行 mvn -v 以确认安装成功。
  2. 在项目的根目录中创建一个新的 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.24.2</version>
            </dependency>
        </dependencies>
    </project>
    
  3. 安装语音 SDK 和依赖项。
    mvn clean dependency:copy-dependencies
    

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

按照以下步骤创建新的语音识别控制台应用程序。

  1. 在同一项目根目录中创建一个名为 SpeechSynthesis.java 的新文件。

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

    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.audio.*;
    
    import java.util.Scanner;
    import java.util.concurrent.ExecutionException;
    
    public class SpeechSynthesis {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        private static String speechKey = System.getenv("SPEECH_KEY");
        private static String speechRegion = System.getenv("SPEECH_REGION");
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
    
            speechConfig.setSpeechSynthesisVoiceName("en-US-JennyNeural"); 
    
            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 region values?");
                }
            }
    
            System.exit(0);
        }
    }
    
  3. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

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

javac SpeechSynthesis.java -cp ".;target\dependency\*"
java -cp ".;target\dependency\*" SpeechSynthesis

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__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

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

注解

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到文件输出

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

  1. 在需要新项目的地方打开命令提示符,并创建名为 SpeechSynthesis.js 的新文件。

  2. 安装适用于 JavaScript 的语音 SDK:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. 将以下代码复制到 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);
        });
    }());
    
  4. SpeechSynthesis.js 中,你还可以选择将 YourAudioFile.wav 重命名为另一个输出文件名。

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

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

node.exe SpeechSynthesis.js

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__REGION 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

提供的文本应当输出到一个音频文件:

Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

注解

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

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

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

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

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

  5. 打开名为 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.");
        }
    }
    
  6. AppDelegate.m 中,使用先前为语音资源密钥和区域设置的环境变量

    NSString *speechKey = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_KEY"];
    NSString *serviceRegion = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPEECH_REGION"];
    
  7. 另外,还可以在 AppDelegate.m 中包括语音合成语音名称,如下所示:

    speechConfig.speechSynthesisVoiceName = @"en-US-JennyNeural";
    
  8. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

  9. 使调试输出可见(“视图”>“调试区域”>“激活控制台”)。

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

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__REGION 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

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

备注

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

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

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

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

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

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

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

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

    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
        }
    }
    
  6. AppDelegate.m 中,使用先前为语音资源密钥和区域设置的环境变量

    sub = ProcessInfo.processInfo.environment["SPEECH_KEY"]
    region = ProcessInfo.processInfo.environment["SPEECH_REGION"]
    
  7. 另外,还可以在 AppDelegate.m 中包括语音合成语音名称,如下所示:

    speechConfig?.speechSynthesisVoiceName = "en-US-JennyNeural";
    
  8. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

  9. 使调试输出可见,方法是:选择“视图”>“调试区域”>“激活控制台”。

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

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__REGION 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

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

备注

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境

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

安装 Python 版本 3.7 到 3.10。 首先请查看 SDK 安装指南以了解更多要求

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到扬声器输出

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

  1. 在需要新项目的地方打开命令提示符,并创建名为 speech_synthesis.py 的新文件。

  2. 运行此命令以安装语音 SDK:

    pip install azure-cognitiveservices-speech
    
  3. 将以下代码复制到 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?")
    
  4. 若要更改语音合成语言,请将 en-US-JennyNeural 替换为另一种受支持的语音。 所有神经网络声音都是多语言的,并且能够流利地使用自己的语言和英语。 例如,如果英语的输入文本为“I'm excited to try text to speech”并且你设置了 es-ES-ElviraNeural,则该文本将用带西班牙口音的英语讲出。 如果语音没有使用输入文本的语言讲出,则语音服务不会输出合成音频。

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

python speech_synthesis.py

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__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

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

注解

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

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

清理资源

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

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

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

提示

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

先决条件

设置环境变量。

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

提示

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

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

  • 若要设置 SPEECH_KEY 环境变量,请将 your-key 替换为资源的其中一个密钥。
  • 若要设置 SPEECH_REGION 环境变量,请将 your-region 替换为资源的其中一个密钥。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

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

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

合成到文件

请在命令提示符处运行以下 cURL 命令。 另外,你还可以将 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 '<speak version='\''1.0'\'' xml:lang='\''en-US'\''>
    <voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-JennyNeural'\''>
        my voice is my passport verify me
    </voice>
</speak>' > output.mp3

重要

请确保按照上文所述设置 SPEECH__KEYSPEECH__REGION 环境变量。 如果未设置这些变量,示例将失败并显示错误消息。

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

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

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

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

清理资源

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

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

提示

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

先决条件

设置环境

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

  1. 通过输入以下命令,使用 .NET CLI 安装语音 CLI:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    
  2. 通过运行以下命令配置语音资源密钥和区域。 将 SUBSCRIPTION-KEY 替换为语音资源密钥,将 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"

警告

Windows 11 上存在一个已知问题,该问题可能会影响某些类型的安全套接字层 (SSL) 和传输层安全性 (TLS) 连接。 有关详细信息,请参阅故障排除指南

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

注解

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

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

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

spx synthesize --ssml "<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='https://www.w3.org/2001/mstts' xml:lang='en-US'><voice name='en-US-JennyNeural'><mstts:express-as style='excited'>I'm excited to try text to speech</mstts:express-as></voice></speak>"

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

spx help synthesize

清理资源

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

后续步骤