快速入門:辨識和翻譯語音轉換文字

參考文件 | 套件 (NuGet) | GitHub 上的其他範例

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

語音 SDK 可作為 NuGet 套件使用,並實作 .NET Standard 2.0。 您稍後會在本指南中安裝語音 SDK,但請先檢查 SDK 安裝指南 以取得任何更多需求。

設定環境變數

您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 針對生產環境,請使用安全的方式來儲存和存取您的認證。 例如,取得 語音資源的金鑰 之後,請將它寫入執行應用程式的本機計算機上新的環境變數。

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項,請參閱 Azure AI 服務安全性,例如 Azure 金鑰保存庫

若要設定語音資源密鑰的環境變數,請開啟控制台視窗,並遵循作業系統和開發環境的指示。

  • 若要設定SPEECH_KEY環境變數,請將your-key取代為資源的其中一個密鑰。
  • 若要設定SPEECH_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;
    using Microsoft.CognitiveServices.Speech.Translation;
    
    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 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 region values?");
                    }
                    break;
            }
        }
    
        async static Task Main(string[] args)
        {
            var speechTranslationConfig = SpeechTranslationConfig.FromSubscription(speechKey, speechRegion);        
            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);
        }
    }
    
  4. 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US。 如需如何識別其中一種可能說出的多種語言的詳細資訊,請參閱 語言識別

  5. 若要變更翻譯目標語言,請以另一種支援的語言取代 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 並使用 PullAudioInputStreamPushAudioInputStream。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊

清除資源

您可以使用 Azure 入口網站Azure 命令行介面 (CLI) 來移除您所建立的語音資源。

參考文件 | 套件 (NuGet) | GitHub 上的其他範例

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

語音 SDK 可作為 NuGet 套件使用,並實作 .NET Standard 2.0。 您稍後會在本指南中安裝語音 SDK,但請先檢查 SDK 安裝指南 以取得任何更多需求

設定環境變數

您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 針對生產環境,請使用安全的方式來儲存和存取您的認證。 例如,取得 語音資源的金鑰 之後,請將它寫入執行應用程式的本機計算機上新的環境變數。

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項,請參閱 Azure AI 服務安全性,例如 Azure 金鑰保存庫

若要設定語音資源密鑰的環境變數,請開啟控制台視窗,並遵循作業系統和開發環境的指示。

  • 若要設定SPEECH_KEY環境變數,請將your-key取代為資源的其中一個密鑰。
  • 若要設定SPEECH_REGION環境變數,請將您的區域取代為您資源的其中一個區域。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果您只需要存取目前控制台中的環境變數,您可以使用 來設定環境變數 set ,而不是 setx

新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果您使用 Visual Studio 作為編輯器,請在執行範例之前重新啟動 Visual Studio。

從麥克風翻譯語音

請遵循下列步驟來建立新的控制台應用程式,並安裝語音 SDK。

  1. 在 Visual Studio Community 2022 中建立名為 SpeechTranslation 的新 C++ 主控台專案。

  2. 使用 NuGet 套件管理員,在您的新專案中安裝語音 SDK。

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. 以下列程式碼取代 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 "SPEECH_REGION"
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        auto speechTranslationConfig = SpeechTranslationConfig::FromSubscription(speechKey, speechRegion);
        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 region 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
    }
    
  4. 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US。 如需如何識別其中一種可能說出的多種語言的詳細資訊,請參閱 語言識別

  5. 若要變更翻譯目標語言,請以另一種支援的語言取代 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 並使用 PullAudioInputStreamPushAudioInputStream。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊

清除資源

您可以使用 Azure 入口網站Azure 命令行介面 (CLI) 來移除您所建立的語音資源。

參考文件 | 套件 (Go) | GitHub 上的其他範例

適用於 Go 的語音 SDK 不支援語音翻譯。 請選取其他程式設計語言,或本文開頭的 Go 參考和樣本連結。

參考文件 | GitHub 上的其他範例

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

您必須先安裝語音 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.37.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. 安裝語音 SDK 和相依性。
    mvn clean dependency:copy-dependencies
    

設定環境變數

您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 針對生產環境,請使用安全的方式來儲存和存取您的認證。 例如,取得 語音資源的金鑰 之後,請將它寫入執行應用程式的本機計算機上新的環境變數。

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項,請參閱 Azure AI 服務安全性,例如 Azure 金鑰保存庫

若要設定語音資源密鑰的環境變數,請開啟控制台視窗,並遵循作業系統和開發環境的指示。

  • 若要設定SPEECH_KEY環境變數,請將your-key取代為資源的其中一個密鑰。
  • 若要設定SPEECH_REGION環境變數,請將您的區域取代為您資源的其中一個區域。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果您只需要存取目前控制台中的環境變數,您可以使用 來設定環境變數 set ,而不是 setx

新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果您使用 Visual Studio 作為編輯器,請在執行範例之前重新啟動 Visual Studio。

從麥克風翻譯語音

請遵循下列步驟來建立新的控制台應用程式以進行語音識別。

  1. 在相同的專案根目錄中建立名為 SpeechTranslation.java 的新檔案。

  2. 將下列程式代碼 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;
    
    public class SpeechTranslation {
        // 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 {
            SpeechTranslationConfig speechTranslationConfig = SpeechTranslationConfig.fromSubscription(speechKey, speechRegion);
            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 region values?");
                }
            }
    
            System.exit(0);
        }
    }
    
  3. 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US。 如需如何識別其中一種可能說出的多種語言的詳細資訊,請參閱 語言識別

  4. 若要變更翻譯目標語言,請以另一種支援的語言取代 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 並使用 PullAudioInputStreamPushAudioInputStream。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊

清除資源

您可以使用 Azure 入口網站Azure 命令行介面 (CLI) 來移除您所建立的語音資源。

參考文件 | 套件 (npm) | GitHub 上的其他範例 | 程式庫原始程式碼

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

您必須先安裝適用於 JavaScript 的語音 SDK,才能執行任何動作。 如果您只要安裝套件名稱,請執行 npm install microsoft-cognitiveservices-speech-sdk。 如需引導式安裝指示,請參閱 SDK 安裝指南

設定環境變數

您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 針對生產環境,請使用安全的方式來儲存和存取您的認證。 例如,取得 語音資源的金鑰 之後,請將它寫入執行應用程式的本機計算機上新的環境變數。

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項,請參閱 Azure AI 服務安全性,例如 Azure 金鑰保存庫

若要設定語音資源密鑰的環境變數,請開啟控制台視窗,並遵循作業系統和開發環境的指示。

  • 若要設定SPEECH_KEY環境變數,請將your-key取代為資源的其中一個密鑰。
  • 若要設定SPEECH_REGION環境變數,請將您的區域取代為您資源的其中一個區域。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果您只需要存取目前控制台中的環境變數,您可以使用 來設定環境變數 set ,而不是 setx

新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果您使用 Visual Studio 作為編輯器,請在執行範例之前重新啟動 Visual Studio。

從檔案翻譯語音

請遵循下列步驟來建立Node.js控制台應用程式以進行語音識別。

  1. 開啟您想要新專案的命令提示字元,並建立名為 SpeechTranslation.js的新檔案。

  2. 安裝適用於 JavaScript 的語音 SDK:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. 將下列程式代碼 SpeechTranslation.js複製到 :

    const fs = require("fs");
    const sdk = require("microsoft-cognitiveservices-speech-sdk");
    
    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
    const speechTranslationConfig = sdk.SpeechTranslationConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    speechTranslationConfig.speechRecognitionLanguage = "en-US";
    
    var language = "it";
    speechTranslationConfig.addTargetLanguage(language);
    
    function fromFile() {
        let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
        let translationRecognizer = new sdk.TranslationRecognizer(speechTranslationConfig, audioConfig);
    
        translationRecognizer.recognizeOnceAsync(result => {
            switch (result.reason) {
                case sdk.ResultReason.TranslatedSpeech:
                    console.log(`RECOGNIZED: Text=${result.text}`);
                    console.log("Translated into [" + language + "]: " + result.translations.get(language));
    
                    break;
                case sdk.ResultReason.NoMatch:
                    console.log("NOMATCH: Speech could not be recognized.");
                    break;
                case sdk.ResultReason.Canceled:
                    const cancellation = sdk.CancellationDetails.fromResult(result);
                    console.log(`CANCELED: Reason=${cancellation.reason}`);
    
                    if (cancellation.reason == sdk.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 region values?");
                    }
                    break;
            }
            translationRecognizer.close();
        });
    }
    fromFile();
    
  4. 在 中 SpeechTranslation.js,將 取代 YourAudioFile.wav 為您自己的 WAV 檔案。 此範例只會辨識來自WAV檔案的語音。 如需其他音訊格式的資訊,請參閱 如何使用壓縮的輸入音訊。 此範例最多支援 30 秒的音訊。

  5. 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US。 如需如何識別其中一種可能說出的多種語言的詳細資訊,請參閱 語言識別

  6. 若要變更翻譯目標語言,請以另一種支援的語言取代 it 。 只有少數例外狀況,您只會指定地區設定虛線 (-) 分隔符前面的語言代碼。 例如,針對西班牙文 (西班牙) 使用 es 而非 es-ES。 如果您未指定語言,則預設語言為 en

執行新的主控台應用程式,從檔案啟動語音辨識:

node.exe SpeechTranslation.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) 來移除您所建立的語音資源。

參考文件 | 套件 (下載) | GitHub 上的其他範例

適用於 Objective-C 的語音 SDK 支援語音翻譯,但我們尚未在此包含指南。 請選取另一種程式設計語言來開始使用並了解概念,或參閱本文開頭連結的 Objective-C 參考和範例。

參考文件 | 套件 (下載) | GitHub 上的其他範例

適用於 Swift 的語音 SDK 支援語音翻譯,但我們尚未在此包含指南。 請選取另一種程式設計語言來開始使用並了解概念,或參閱本文開頭連結的 Swift 參考和範例。

參考文件 | 套件 (PyPi) | GitHub 上的其他範例

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

適用於 Python 的語音 SDK 可作為 Python 套件索引 (PyPI) 模組。 適用於 Python 的語音 SDK 與 Windows、Linux 和 macOS 相容。

安裝 Python 從 3.7 或更新的版本。 請先檢查 SDK 安裝指南 以取得任何更多需求

設定環境變數

您的應用程式必須經過驗證,才能存取 Azure AI 服務資源。 針對生產環境,請使用安全的方式來儲存和存取您的認證。 例如,取得 語音資源的金鑰 之後,請將它寫入執行應用程式的本機計算機上新的環境變數。

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項,請參閱 Azure AI 服務安全性,例如 Azure 金鑰保存庫

若要設定語音資源密鑰的環境變數,請開啟控制台視窗,並遵循作業系統和開發環境的指示。

  • 若要設定SPEECH_KEY環境變數,請將your-key取代為資源的其中一個密鑰。
  • 若要設定SPEECH_REGION環境變數,請將您的區域取代為您資源的其中一個區域。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

注意

如果您只需要存取目前控制台中的環境變數,您可以使用 來設定環境變數 set ,而不是 setx

新增環境變數之後,您可能需要重新啟動任何需要讀取環境變數的程式,包括主控台視窗。 例如,如果您使用 Visual Studio 作為編輯器,請在執行範例之前重新啟動 Visual Studio。

從麥克風翻譯語音

請遵循下列步驟來建立新的控制台應用程式。

  1. 開啟您想要新專案的命令提示字元,並建立名為 speech_translation.py的新檔案。

  2. 執行此指令以安裝語音 SDK:

    pip install azure-cognitiveservices-speech
    
  3. 將下列程式代碼 speech_translation.py複製到 :

    import os
    import azure.cognitiveservices.speech as speechsdk
    
    def recognize_from_microphone():
        # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speech_translation_config = speechsdk.translation.SpeechTranslationConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
        speech_translation_config.speech_recognition_language="en-US"
    
        target_language="it"
        speech_translation_config.add_target_language(target_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(
                target_language, 
                translation_recognition_result.translations[target_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 region values?")
    
    recognize_from_microphone()
    
  4. 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US。 如需如何識別其中一種可能說出的多種語言的詳細資訊,請參閱 語言識別

  5. 若要變更翻譯目標語言,請以另一種支援的語言取代 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 並使用 PullAudioInputStreamPushAudioInputStream。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊

清除資源

您可以使用 Azure 入口網站Azure 命令行介面 (CLI) 來移除您所建立的語音資源。

語音轉換文字 REST API 參考 | 適用於簡短音訊的語音轉換文字 REST API 參考 | GitHub 上的其他範例

REST API 不支援語音翻譯。 請從此頁面頂端選取另一種程式設計語言或工具。

在本快速入門中,您會執行應用程式,以將語音從某個語言翻譯成其他語言的文字。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在 Azure 入口網站上建立語音資源
  • 您的語音資源金鑰和區域。 部署語音資源之後,請選取 [移至資源 ] 以檢視和管理密鑰。 如需 Azure AI 服務資源的詳細資訊,請參閱取得資源的金鑰

設定環境

請遵循下列步驟,並參閱 語音 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 translate --source en-US --target it --microphone

用麥克風說話,您會即時看到翻譯語音的謄寫。 語音 CLI 會在一段無聲、30 秒或按 Ctrl+C 之後停止。

Connection CONNECTED...
TRANSLATING into 'it': Sono (from 'I'm')
TRANSLATING into 'it': Sono entusiasta (from 'I'm excited to')
TRANSLATING into 'it': Sono entusiasta di provare la parola (from 'I'm excited to try speech')
TRANSLATED into 'it': Sono entusiasta di provare la traduzione vocale. (from 'I'm excited to try speech translation.')

備註

現在您已經完成快速入門,以下是一些額外的考慮:

  • 若要從音訊檔案取得語音,請使用 --file 而非 --microphone。 針對 MP4 等壓縮音訊檔案,請安裝 GStreamer 並使用 --format。 如需詳細資訊,請參閱如何使用壓縮的輸入音訊
    spx translate --source en-US --target it --file YourAudioFile.wav
    spx translate --source en-US --target it --file YourAudioFile.mp4 --format any
    
  • 若要改善特定單字或語句的辨識精確度,請使用 片語列清單。 您會在內嵌或文字檔案中包含片語清單:
    spx translate --source en-US --target it --microphone --phrases "Contoso;Jessie;Rehaan;"
    spx translate --source en-US --target it --microphone --phrases @phrases.txt
    
  • 若要變更語音辨識語言,請將 取代 en-US 為另一種 支持的語言。 使用虛線 (-) 分隔符指定完整的地區設定。 例如, es-ES 適用於西班牙文(西班牙)。 如果您未指定語言,則預設語言為 en-US
    spx translate --microphone --source es-ES
    
  • 若要變更翻譯目標語言,請以另一種支援的語言取代 it 。 只有少數例外狀況,您只會指定地區設定虛線 (-) 分隔符前面的語言代碼。 例如,針對西班牙文 (西班牙) 使用 es 而非 es-ES。 如果您未指定語言,則預設語言為 en
    spx translate --microphone --target es
    
  • 若要連續辨識超過 30 秒的音訊,請附加 --continuous
    spx translate --source en-US --target it --microphone --continuous
    

執行此命令,以取得其他語音翻譯選項的相關信息,例如檔案輸入和輸出:

spx help translate

清除資源

您可以使用 Azure 入口網站Azure 命令行介面 (CLI) 來移除您所建立的語音資源。

下一步