Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
参考文档 | 包(NuGet) | 在 GitHub 上的更多示例
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
语音 SDK 可用作 NuGet 包并实现 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求。
设置环境变量。
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
翻译来自麦克风的语音
按照以下步骤创建新的控制台应用程序并安装语音 SDK。
打开需要新项目的命令提示符,并使用 .NET CLI 创建控制台应用程序。 应在项目目录中创建
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; using Microsoft.CognitiveServices.Speech.Translation; class Program { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY"); static string endpoint = Environment.GetEnvironmentVariable("ENDPOINT"); static void OutputSpeechRecognitionResult(TranslationRecognitionResult translationRecognitionResult) { switch (translationRecognitionResult.Reason) { case ResultReason.TranslatedSpeech: Console.WriteLine($"RECOGNIZED: Text={translationRecognitionResult.Text}"); foreach (var element in translationRecognitionResult.Translations) { Console.WriteLine($"TRANSLATED into '{element.Key}': {element.Value}"); } break; case ResultReason.NoMatch: Console.WriteLine($"NOMATCH: Speech could not be recognized."); break; case ResultReason.Canceled: var cancellation = CancellationDetails.FromResult(translationRecognitionResult); Console.WriteLine($"CANCELED: Reason={cancellation.Reason}"); if (cancellation.Reason == CancellationReason.Error) { Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}"); Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}"); Console.WriteLine($"CANCELED: Did you set the speech resource key and endpoint values?"); } break; } } async static Task Main(string[] args) { var speechTranslationConfig = SpeechTranslationConfig.FromEndpoint(new Uri(endpoint), speechKey); speechTranslationConfig.SpeechRecognitionLanguage = "en-US"; speechTranslationConfig.AddTargetLanguage("it"); using var audioConfig = AudioConfig.FromDefaultMicrophoneInput(); using var translationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig); Console.WriteLine("Speak into your microphone."); var translationRecognitionResult = await translationRecognizer.RecognizeOnceAsync(); OutputSpeechRecognitionResult(translationRecognitionResult); } }若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
运行新的控制台应用程序,从麦克风开始进行语音识别:
dotnet run
当系统提示时,对着麦克风说话。 你所说的内容应以目标语言的翻译文本形式输出:
Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
TRANSLATED into 'it': Sono entusiasta di provare la traduzione vocale.
注解
完成快速入门后,下面是一些注意事项:
- 此示例使用
RecognizeOnceAsync操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。 - 若要从音频文件中识别语音,请使用
FromWavFileInput而不是FromDefaultMicrophoneInput:using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav"); - 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用
PullAudioInputStream或PushAudioInputStream。 有关详细信息,请参阅如何使用压缩的输入音频。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | 包(NuGet) | 在 GitHub 上的更多示例
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
语音 SDK 可用作 NuGet 包并实现 .NET Standard 2.0。 本指南的后面部分会安装语音 SDK,但先请查看 SDK 安装指南以了解更多要求
设置环境变量。
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
翻译来自麦克风的语音
按照以下步骤创建新的控制台应用程序并安装语音 SDK。
在名为
SpeechTranslation的 Visual Studio Community 2022 中创建一个新的 C++ 控制台项目。使用 NuGet 包管理器在新项目中安装语音 SDK。
Install-Package Microsoft.CognitiveServices.Speech将
SpeechTranslation.cpp的内容替换为以下代码:#include <iostream> #include <stdlib.h> #include <speechapi_cxx.h> using namespace Microsoft::CognitiveServices::Speech; using namespace Microsoft::CognitiveServices::Speech::Audio; using namespace Microsoft::CognitiveServices::Speech::Translation; std::string GetEnvironmentVariable(const char* name); int main() { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" auto speechKey = GetEnvironmentVariable("SPEECH_KEY"); auto endpoint = GetEnvironmentVariable("ENDPOINT"); auto speechTranslationConfig = SpeechTranslationConfig::FromEndpoint(endpoint, speechKey); speechTranslationConfig->SetSpeechRecognitionLanguage("en-US"); speechTranslationConfig->AddTargetLanguage("it"); auto audioConfig = AudioConfig::FromDefaultMicrophoneInput(); auto translationRecognizer = TranslationRecognizer::FromConfig(speechTranslationConfig, audioConfig); std::cout << "Speak into your microphone.\n"; auto result = translationRecognizer->RecognizeOnceAsync().get(); if (result->Reason == ResultReason::TranslatedSpeech) { std::cout << "RECOGNIZED: Text=" << result->Text << std::endl; for (auto pair : result->Translations) { auto language = pair.first; auto translation = pair.second; std::cout << "Translated into '" << language << "': " << translation << std::endl; } } else if (result->Reason == ResultReason::NoMatch) { std::cout << "NOMATCH: Speech could not be recognized." << std::endl; } else if (result->Reason == ResultReason::Canceled) { auto cancellation = CancellationDetails::FromResult(result); std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl; if (cancellation->Reason == CancellationReason::Error) { std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl; std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl; std::cout << "CANCELED: Did you set the speech resource key and endpoint values?" << std::endl; } } } std::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 }若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
若要从麦克风启动语音识别, 请生成并运行 新的控制台应用程序。
当系统提示时,对着麦克风说话。 你所说的内容应以目标语言的翻译文本形式输出:
Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.
注解
完成快速入门后,下面是一些注意事项:
- 此示例使用
RecognizeOnceAsync操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。 - 若要从音频文件中识别语音,请使用
FromWavFileInput而不是FromDefaultMicrophoneInput:auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav"); - 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用
PullAudioInputStream或PushAudioInputStream。 有关详细信息,请参阅如何使用压缩的输入音频。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | Package (Go) | GitHub 上的附加示例
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
适用于 Go 的语音 SDK 以模块形式提供。 有关详细信息,请参阅 适用于 Go 的语音 SDK pkg.go.dev。
在使用语音 SDK for Go 之前,请安装语音 SDK 原生库。 有关详细信息,请参阅 安装指南 。
设置环境变量。
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
翻译来自麦克风的语音
按照以下步骤创建新的控制台应用程序。
为项目创建新目录并创建名为
speech_translation.go的文件。安装语音 SDK 模块:
go get github.com/Microsoft/cognitive-services-speech-sdk-go将以下代码复制到
speech_translation.go中:package main import ( "fmt" "os" "github.com/Microsoft/cognitive-services-speech-sdk-go/audio" "github.com/Microsoft/cognitive-services-speech-sdk-go/speech" ) func main() { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speechKey := os.Getenv("SPEECH_KEY") speechRegion := os.Getenv("SPEECH_REGION") translationConfig, err := speech.NewSpeechTranslationConfigFromSubscription(speechKey, speechRegion) if err != nil { fmt.Println("Error creating translation config:", err) return } defer translationConfig.Close() err = translationConfig.SetSpeechRecognitionLanguage("en-US") if err != nil { fmt.Println("Error setting speech recognition language:", err) return } toLanguage := "it" err = translationConfig.AddTargetLanguage(toLanguage) if err != nil { fmt.Println("Error adding target language:", err) return } audioConfig, err := audio.NewAudioConfigFromDefaultMicrophoneInput() if err != nil { fmt.Println("Error creating audio config:", err) return } defer audioConfig.Close() translationRecognizer, err := speech.NewTranslationRecognizerFromConfig(translationConfig, audioConfig) if err != nil { fmt.Println("Error creating translation recognizer:", err) return } defer translationRecognizer.Close() fmt.Println("Speak into your microphone.") outcome := <-translationRecognizer.RecognizeOnceAsync() if outcome.Error != nil { fmt.Println("Recognition error:", outcome.Error) return } result := outcome.Result defer result.Close() if result.Reason == speech.ResultReason.TranslatedSpeech { fmt.Printf("Recognized: %s\n", result.Text) translations := result.GetTranslations() fmt.Printf("Translated into '%s': %s\n", toLanguage, translations[toLanguage]) } else if result.Reason == speech.ResultReason.NoMatch { fmt.Println("No speech could be recognized.") } else if result.Reason == speech.ResultReason.Canceled { fmt.Println("Speech recognition canceled.") } }若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
运行新的控制台应用程序,从麦克风开始进行语音识别:
go run speech_translation.go
当系统提示时,对着麦克风说话。 你所说的内容应以目标语言的翻译文本形式输出:
Speak into your microphone.
Recognized: I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.
注解
完成快速入门后,下面是一些注意事项:
- 此示例使用
RecognizeOnceAsync操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。 - 若要从音频文件中识别语音,请使用
NewAudioConfigFromWavFileInput而不是NewAudioConfigFromDefaultMicrophoneInput:audioConfig, err := audio.NewAudioConfigFromWavFileInput("YourAudioFile.wav") - 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用
CreatePullStream或CreatePushStream。 有关详细信息,请参阅如何使用压缩的输入音频。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
需要先安装语音 SDK,然后才能执行其他操作。 本快速入门中的示例适用于 Java Runtime。
- 安装 Apache Maven。 然后运行
mvn -v以确认安装成功。 - 在项目的根目录中创建一个新
pom.xml文件,并将以下内容复制到其中:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk</artifactId> <version>1.43.0</version> </dependency> </dependencies> </project> - 安装语音 SDK 和依赖项。
mvn clean dependency:copy-dependencies
设置环境变量。
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
翻译来自麦克风的语音
按照以下步骤创建新的语音识别控制台应用程序。
在同一项目根目录中创建一个名为
SpeechTranslation.java的新文件。将以下代码复制到
SpeechTranslation.java中:import com.microsoft.cognitiveservices.speech.*; import com.microsoft.cognitiveservices.speech.audio.AudioConfig; import com.microsoft.cognitiveservices.speech.translation.*; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.Map; import java.net.URI; import java.net.URISyntaxException; public class SpeechTranslation { // This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" private static String speechKey = System.getenv("SPEECH_KEY"); private static String endpoint = System.getenv("ENDPOINT"); public static void main(String[] args) throws InterruptedException, ExecutionException { SpeechTranslationConfig speechTranslationConfig; try { speechTranslationConfig = SpeechTranslationConfig.fromEndpoint(new URI(endpoint), speechKey); } catch (URISyntaxException e) { throw new IllegalArgumentException("ENDPOINT is not a valid URI: " + endpoint, e); } speechTranslationConfig.setSpeechRecognitionLanguage("en-US"); String[] toLanguages = { "it" }; for (String language : toLanguages) { speechTranslationConfig.addTargetLanguage(language); } recognizeFromMicrophone(speechTranslationConfig); } public static void recognizeFromMicrophone(SpeechTranslationConfig speechTranslationConfig) throws InterruptedException, ExecutionException { AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput(); TranslationRecognizer translationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig); System.out.println("Speak into your microphone."); Future<TranslationRecognitionResult> task = translationRecognizer.recognizeOnceAsync(); TranslationRecognitionResult translationRecognitionResult = task.get(); if (translationRecognitionResult.getReason() == ResultReason.TranslatedSpeech) { System.out.println("RECOGNIZED: Text=" + translationRecognitionResult.getText()); for (Map.Entry<String, String> pair : translationRecognitionResult.getTranslations().entrySet()) { System.out.printf("Translated into '%s': %s\n", pair.getKey(), pair.getValue()); } } else if (translationRecognitionResult.getReason() == ResultReason.NoMatch) { System.out.println("NOMATCH: Speech could not be recognized."); } else if (translationRecognitionResult.getReason() == ResultReason.Canceled) { CancellationDetails cancellation = CancellationDetails.fromResult(translationRecognitionResult); System.out.println("CANCELED: Reason=" + cancellation.getReason()); if (cancellation.getReason() == CancellationReason.Error) { System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode()); System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails()); System.out.println("CANCELED: Did you set the speech resource key and endpoint values?"); } } System.exit(0); } }若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
运行新的控制台应用程序,从麦克风开始进行语音识别:
javac SpeechTranslation.java -cp ".;target\dependency\*"
java -cp ".;target\dependency\*" SpeechTranslation
当系统提示时,对着麦克风说话。 你所说的内容应以目标语言的翻译文本形式输出:
Speak into your microphone.
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.
注解
完成快速入门后,下面是一些注意事项:
- 此示例使用
RecognizeOnceAsync操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。 - 若要从音频文件中识别语音,请使用
fromWavFileInput而不是fromDefaultMicrophoneInput:AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav"); - 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用
PullAudioInputStream或PushAudioInputStream。 有关详细信息,请参阅如何使用压缩的输入音频。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
创建新文件夹
translation-quickstart,并使用以下命令转到快速入门文件夹:mkdir translation-quickstart && cd translation-quickstart使用以下命令创建
package.json:npm init -y使用以下命令安装适用于 JavaScript 的语音 SDK:
npm install microsoft-cognitiveservices-speech-sdk
检索资源信息
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
从文件中翻译语音
从文件翻译语音:
创建包含以下内容 translation.js 的新文件:
import { readFileSync } from "fs"; import { SpeechTranslationConfig, AudioConfig, TranslationRecognizer, ResultReason, CancellationDetails, CancellationReason } from "microsoft-cognitiveservices-speech-sdk"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechTranslationConfig = SpeechTranslationConfig.fromEndpoint(new URL(process.env.ENDPOINT), process.env.SPEECH_KEY); speechTranslationConfig.speechRecognitionLanguage = "en-US"; const language = "it"; speechTranslationConfig.addTargetLanguage(language); function fromFile() { const audioConfig = AudioConfig.fromWavFileInput(readFileSync("YourAudioFile.wav")); const translationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig); translationRecognizer.recognizeOnceAsync((result) => { switch (result.reason) { case ResultReason.TranslatedSpeech: console.log(`RECOGNIZED: Text=${result.text}`); console.log("Translated into [" + language + "]: " + result.translations.get(language)); break; case ResultReason.NoMatch: console.log("NOMATCH: Speech could not be recognized."); break; case ResultReason.Canceled: const cancellation = CancellationDetails.fromResult(result); console.log(`CANCELED: Reason=${cancellation.reason}`); if (cancellation.reason === CancellationReason.Error) { console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`); console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`); console.log("CANCELED: Did you set the speech resource key and endpoint values?"); } break; } translationRecognizer.close(); }); } fromFile();在
translation.js中,将YourAudioFile.wav替换为你自己的 WAV 文件。 此示例仅识别 WAV 文件中的语音。 有关其他音频格式的信息,请参阅如何使用压缩的输入音频。 此示例支持最多 30 秒的音频。若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
运行新的控制台应用程序,从文件开始进行语音识别:
node translation.js
输出
音频文件中的语音应以目标语言的翻译文本形式输出:
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into [it]: Sono entusiasta di provare la traduzione vocale.
注解
你现已完成快速入门,下面是一些其他注意事项:
此示例使用 recognizeOnceAsync 操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。
注意
Node.js 中不支持识别来自麦克风的语音。 仅在基于浏览器的 JavaScript 环境中支持该功能。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
参考文档 | Package(下载) | GitHub 上的额外示例
适用于 Objective-C 的语音 SDK 确实支持语音翻译,但我们尚未在此处提供相关指南。 请选择其他编程语言开始了解相关概念,或参阅本文开头链接的 Objective-C 引用和示例。
参考文档 | Package(下载) | GitHub 上的额外示例
适用于 Swift 的语音 SDK 确实支持语音翻译,但我们尚未在此处提供相关指南。 请选择其他编程语言开始了解相关概念,或参阅本文开头链接的 Swift 引用和示例。
参考文档 | 软件包(PyPi) | GitHub 上的其他示例
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用订阅。
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和终结点。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
Python的语音 SDK 可用作 Python 包索引(PyPI)模块。 适用于Python的语音 SDK 与 Windows、Linux 和 macOS 兼容。
- 安装 Microsoft Visual C++ Redistributable for Visual Studio 2015、2017、2019 和 2022。 如果这是首次安装包,请重新启动计算机。
- 在 Linux 上使用 x64 目标体系结构。
请安装 Python 版本 3.7 或更高版本。 首先请查看 SDK 安装指南以了解更多要求
设置环境变量。
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要设置您的语音资源密钥和终结点的环境变量,请打开控制台窗口,并按照您的操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 若要设置
ENDPOINT环境变量,请将 your-endpoint 替换为您资源的某个终结点。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
翻译来自麦克风的语音
按照以下步骤创建新的控制台应用程序。
在需要新项目的地方打开命令提示符,并创建名为
speech_translation.py的新文件。运行此命令以安装语音 SDK:
pip install azure-cognitiveservices-speech将以下代码复制到
speech_translation.py中:import os import azure.cognitiveservices.speech as speechsdk def recognize_from_microphone(): # This example requires environment variables named "SPEECH_KEY" and "ENDPOINT" # Replace with your own subscription key and endpoint, the endpoint is like : "https://YourServiceRegion.api.cognitive.azure.cn" speech_translation_config = speechsdk.translation.SpeechTranslationConfig(subscription=os.environ.get('SPEECH_KEY'), endpoint=os.environ.get('ENDPOINT')) speech_translation_config.speech_recognition_language="en-US" to_language ="it" speech_translation_config.add_target_language(to_language) audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True) translation_recognizer = speechsdk.translation.TranslationRecognizer(translation_config=speech_translation_config, audio_config=audio_config) print("Speak into your microphone.") translation_recognition_result = translation_recognizer.recognize_once_async().get() if translation_recognition_result.reason == speechsdk.ResultReason.TranslatedSpeech: print("Recognized: {}".format(translation_recognition_result.text)) print("""Translated into '{}': {}""".format( to_language, translation_recognition_result.translations[to_language])) elif translation_recognition_result.reason == speechsdk.ResultReason.NoMatch: print("No speech could be recognized: {}".format(translation_recognition_result.no_match_details)) elif translation_recognition_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = translation_recognition_result.cancellation_details print("Speech Recognition canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: print("Error details: {}".format(cancellation_details.error_details)) print("Did you set the speech resource key and endpoint values?") recognize_from_microphone()若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
运行新的控制台应用程序,从麦克风开始进行语音识别:
python speech_translation.py
当系统提示时,对着麦克风说话。 你所说的内容应以目标语言的翻译文本形式输出:
Speak into your microphone.
Recognized: I'm excited to try speech translation.
Translated into 'it': Sono entusiasta di provare la traduzione vocale.
注解
完成快速入门后,下面是一些注意事项:
- 此示例使用
recognize_once_async操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。 - 若要从音频文件中识别语音,请使用
filename而不是use_default_microphone:audio_config = speechsdk.audio.AudioConfig(filename="YourAudioFile.wav") - 对于压缩的音频文件(如 MP4),请安装 GStreamer 并使用
PullAudioInputStream或PushAudioInputStream。 有关详细信息,请参阅如何使用压缩的输入音频。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
在本快速入门中,你将运行一个应用程序将一种语言的语音翻译成另一种语言的文本。
提示
试用 Azure Speech Toolkit,以便轻松地在Visual Studio Code上生成和运行示例。
先决条件
- Azure订阅。 可以创建一个试用帐户
- 在 Azure 门户中创建用于语音的 AI Services 资源。
- 获取语音资源密钥和区域。 部署语音资源后,选择“转到资源”以查看和管理密钥。
设置环境
创建新文件夹
translation-quickstart,并使用以下命令转到快速入门文件夹:mkdir translation-quickstart && cd translation-quickstart使用以下命令创建
package.json:npm init -y使用以下命令将
package.json更新为 ECMAScript:npm pkg set type=module使用以下命令安装适用于 JavaScript 的语音 SDK:
npm install microsoft-cognitiveservices-speech-sdk需要安装 Node.js 类型定义以避免 TypeScript 错误。 运行下面的命令:
npm install --save-dev @types/node
检索资源信息
需要对应用程序进行身份验证才能访问Azure AI services。 本文介绍如何使用环境变量来存储凭据。 然后,你可以从代码访问环境变量来验证应用程序。 对于生产环境,请使用更安全的方式来存储和访问凭据。
重要
我们推荐使用 Microsoft Entra ID 进行身份验证,并使用 Azure 资源的托管标识,以避免将凭据存储在云中运行的应用程序中。
请谨慎使用 API 密钥。 请不要直接在代码中包含 API 密钥,并且切勿公开发布该密钥。 如果使用 API 密钥,请安全地将其存储在Azure Key Vault中,定期轮换密钥,并使用基于角色的访问控制和网络访问限制来限制对Azure Key Vault的访问。
有关 AI 服务安全性的详细信息,请参阅 对 Azure AI 服务进行请求身份验证。
若要为语音资源密钥和区域设置环境变量,请打开控制台窗口,并按照操作系统和开发环境的说明进行操作。
- 要设置
SPEECH_KEY环境变量,请将“your-key”替换为你的资源的某一个密钥。 - 要设置
SPEECH_REGION环境变量,请将 your-region 替换为你的资源的某一个地区。 - 若要设置
ENDPOINT环境变量,请将your-endpoint替换为语音资源的实际终结点。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint
注意
如果你只需要访问当前控制台中的环境变量,可使用 set(而不是 setx)来设置环境变量。
添加环境变量后,你可能需要重启任何需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用Visual Studio作为编辑器,请在运行示例之前重启Visual Studio。
从文件中翻译语音
从文件翻译语音:
创建包含以下内容 translation.ts 的新文件:
import { readFileSync } from "fs"; import { SpeechTranslationConfig, AudioConfig, TranslationRecognizer, ResultReason, CancellationDetails, CancellationReason, TranslationRecognitionResult } from "microsoft-cognitiveservices-speech-sdk"; // This example requires environment variables named "ENDPOINT" and "SPEECH_KEY" const speechTranslationConfig: SpeechTranslationConfig = SpeechTranslationConfig.fromEndpoint(new URL(process.env.ENDPOINT!), process.env.SPEECH_KEY!); speechTranslationConfig.speechRecognitionLanguage = "en-US"; const language = "it"; speechTranslationConfig.addTargetLanguage(language); function fromFile(): void { const audioConfig: AudioConfig = AudioConfig.fromWavFileInput(readFileSync("YourAudioFile.wav")); const translationRecognizer: TranslationRecognizer = new TranslationRecognizer(speechTranslationConfig, audioConfig); translationRecognizer.recognizeOnceAsync((result: TranslationRecognitionResult) => { switch (result.reason) { case ResultReason.TranslatedSpeech: console.log(`RECOGNIZED: Text=${result.text}`); console.log("Translated into [" + language + "]: " + result.translations.get(language)); break; case ResultReason.NoMatch: console.log("NOMATCH: Speech could not be recognized."); break; case ResultReason.Canceled: const cancellation: CancellationDetails = CancellationDetails.fromResult(result); console.log(`CANCELED: Reason=${cancellation.reason}`); if (cancellation.reason === CancellationReason.Error) { console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`); console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`); console.log("CANCELED: Did you set the speech resource key and endpoint values?"); } break; } translationRecognizer.close(); }); } fromFile();在
translation.ts中,将YourAudioFile.wav替换为你自己的 WAV 文件。 此示例仅识别 WAV 文件中的语音。 有关其他音频格式的信息,请参阅如何使用压缩的输入音频。 此示例支持最多 30 秒的音频。若要更改语音识别语言,请将
en-US替换为其他支持的语言。 指定具有短划线 (-) 分隔符的完整区域设置。 例如,es-ES代表西班牙语(西班牙)。 如果未指定语言,则默认语言为en-US。 若要详细了解如何从多种使用的语言中进行识别,请参阅语言识别。若要更改翻译目标语言,请将
it替换为其他支持的语言。 在极少数情况下,只需指定区域设置短划线 (-) 分隔符前面的语言代码。 例如,对于西班牙语(西班牙)使用es(而不是es-ES)。 如果未指定语言,则默认语言为en。
创建
tsconfig.json文件以转译 TypeScript 代码,然后复制以下 ECMAScript 代码。{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }从 TypeScript 转译到 JavaScript。
tsc如果成功,此命令不应生成任何输出。
运行新的控制台应用程序,从文件开始进行语音识别:
node translation.js
输出
音频文件中的语音应以目标语言的翻译文本形式输出:
RECOGNIZED: Text=I'm excited to try speech translation.
Translated into [it]: Sono entusiasta di provare la traduzione vocale.
注解
你现已完成快速入门,下面是一些其他注意事项:
此示例使用 recognizeOnceAsync 操作听录 30 秒以内的语音,或直到检测到静音。 如要详细了解长音频的持续识别(包括多语言对话),请参阅如何翻译语音。
注意
Node.js 中不支持识别来自麦克风的语音。 仅在基于浏览器的 JavaScript 环境中支持该功能。
清理资源
可以使用 Azure 门户或 Azure命令行接口 (CLI)删除创建的语音资源。
语音转文本 REST API 参考 | 短音频的语音转文本 REST API 参考 | GitHub 上的更多示例
REST API 不支持语音翻译。 请从此页顶部选择其他编程语言或工具。