次の方法で共有


クイックスタート: 音声を認識してテキストに翻訳する

リファレンス ドキュメント | パッケージ (NuGet) | GitHub 上のその他のサンプル

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

環境をセットアップする

Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Speech SDK は、このガイドで後でインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください。

環境変数の設定

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Speech リソース キーとエンドポイントの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、エンドポイントをリソースのエンドポイントのいずれかに置き換えます。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

マイクから音声を翻訳する

以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。

  1. 新しいプロジェクトを作成するコマンド プロンプトを開き、.NET CLI を使用してコンソール アプリケーションを作成します。 Program.cs ファイルは、プロジェクト ディレクトリに作成する必要があります。

    dotnet new console
    
  2. .NET CLI を使用して、新しいプロジェクトに Speech 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 "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);
        }
    }
    
  4. 音声認識言語を変更するには、en-US を別のサポートされている言語に置き換えます。 ダッシュ (-) を区切り記号として使って完全なロケールを指定します。 たとえば、スペイン語 (スペイン) の場合は、es-ES を作成します。 言語を指定しない場合、既定の言語は en-US です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

  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 秒間、または無音が検出されるまでの発話を文字起こししています。 多言語での会話を含め、より長いオーディオの継続的認識については、「音声を翻訳する方法」を参照してください。
  • オーディオ ファイルから音声を認識するには、FromDefaultMicrophoneInput の代わりに FromWavFileInput を使用します。
    using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
    
  • MP4 などの圧縮されたオーディオ ファイルの場合は、GStreamer をインストールして、PullAudioInputStream または PushAudioInputStream を使います。 詳しくは、「圧縮された入力オーディオを使用する方法」をご覧ください。

リソースをクリーンアップする

Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | パッケージ (NuGet) | GitHub 上のその他のサンプル

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

環境をセットアップする

Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Speech SDK は、このガイドで後でインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください。

環境変数の設定

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Speech リソース キーとエンドポイントの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、エンドポイントをリソースのエンドポイントのいずれかに置き換えます。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

マイクから音声を翻訳する

以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。

  1. Visual Studio Community 2022 で、SpeechTranslation という新しい C++ コンソール プロジェクトを作成します。

  2. NuGet パッケージ マネージャーを使用して、新しいプロジェクトに Speech 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 "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
    }
    
  4. 音声認識言語を変更するには、en-US を別のサポートされている言語に置き換えます。 ダッシュ (-) を区切り記号として使って完全なロケールを指定します。 たとえば、スペイン語 (スペイン) の場合は、es-ES を作成します。 言語を指定しない場合、既定の言語は en-US です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

  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 秒間、または無音が検出されるまでの発話を文字起こししています。 多言語での会話を含め、より長いオーディオの継続的認識については、「音声を翻訳する方法」を参照してください。
  • オーディオ ファイルから音声を認識するには、FromDefaultMicrophoneInput の代わりに FromWavFileInput を使用します。
    auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
    
  • MP4 などの圧縮されたオーディオ ファイルの場合は、GStreamer をインストールして、PullAudioInputStream または PushAudioInputStream を使います。 詳しくは、「圧縮された入力オーディオを使用する方法」をご覧ください。

リソースをクリーンアップする

Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | パッケージ (Go) | GitHub 上のその他のサンプル

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

  • Azure サブスクリプション。 無料で作成できます
  • Azure portal で Speech の Foundry リソースを作成します。
  • Speech リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。

環境をセットアップする

Speech SDK for Go はモジュールとして使用できます。 詳細については、 Speech SDK for Go on pkg.go.dev を参照してください

Speech SDK for Go を使用する前に、Speech SDK ネイティブ ライブラリをインストールします。 詳細については、 インストール ガイド を参照してください。

環境変数の設定

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Azure Cognitive Service for Speech リソース キーの環境変数とリージョンを設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • SPEECH_REGION 環境変数を設定するには、your-region をリソースのリージョンの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、your-endpointを Speech リソースの実際のエンドポイントに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

マイクから音声を翻訳する

次の手順を実行して、新しいコンソール アプリケーションを作成します。

  1. プロジェクトの新しいディレクトリを作成し、 speech_translation.goという名前のファイルを作成します。

  2. Speech SDK モジュールをインストールします。

    go get github.com/Microsoft/cognitive-services-speech-sdk-go
    
  3. 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.")
        }
    }
    
  4. 音声認識言語を変更するには、en-US を別のサポートされている言語に置き換えます。 ダッシュ (-) を区切り記号として使って完全なロケールを指定します。 たとえば、スペイン語 (スペイン) の場合は、es-ES を作成します。 言語を指定しない場合、既定の言語は en-US です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

  5. 翻訳対象言語を変更するには、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 秒間、または無音が検出されるまでの発話を文字起こししています。 多言語での会話を含め、より長いオーディオの継続的認識については、「音声を翻訳する方法」を参照してください。
  • オーディオ ファイルから音声を認識するには、NewAudioConfigFromDefaultMicrophoneInput の代わりに NewAudioConfigFromWavFileInput を使用します。
    audioConfig, err := audio.NewAudioConfigFromWavFileInput("YourAudioFile.wav")
    
  • MP4 などの圧縮されたオーディオ ファイルの場合は、GStreamer をインストールして、CreatePullStream または CreatePushStream を使います。 詳しくは、「圧縮された入力オーディオを使用する方法」をご覧ください。

リソースをクリーンアップする

Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | GitHub 上のその他のサンプル

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

環境をセットアップする

何らかの操作を行うには、事前に Speech 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.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. Speech SDK と依存関係をインストールします。
    mvn clean dependency:copy-dependencies
    

環境変数の設定

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Speech リソース キーとエンドポイントの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、エンドポイントをリソースのエンドポイントのいずれかに置き換えます。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、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;
    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);
        }
    }
    
  3. 音声認識言語を変更するには、en-US を別のサポートされている言語に置き換えます。 ダッシュ (-) を区切り記号として使って完全なロケールを指定します。 たとえば、スペイン語 (スペイン) の場合は、es-ES を作成します。 言語を指定しない場合、既定の言語は en-US です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

  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 秒間、または無音が検出されるまでの発話を文字起こししています。 多言語での会話を含め、より長いオーディオの継続的認識については、「音声を翻訳する方法」を参照してください。
  • オーディオ ファイルから音声を認識するには、fromDefaultMicrophoneInput の代わりに fromWavFileInput を使用します。
    AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
    
  • MP4 などの圧縮されたオーディオ ファイルの場合は、GStreamer をインストールして、PullAudioInputStream または PushAudioInputStream を使います。 詳しくは、「圧縮された入力オーディオを使用する方法」をご覧ください。

リソースをクリーンアップする

Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | パッケージ (npm) | GitHub 上のその他のサンプル | ライブラリのソース コード

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

  • Azure サブスクリプション。 無料で作成できます
  • Azure portal で Speech の Foundry リソースを作成します。
  • Speech リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。

環境をセットアップする

  1. translation-quickstart新しいフォルダーを作成し、次のコマンドを使用してクイック スタート フォルダーに移動します。

    mkdir translation-quickstart && cd translation-quickstart
    
  2. 次のコマンドで package.json を作成します。

    npm init -y
    
  3. 次のコマンドを使用して Speech SDK for JavaScript をインストールします。

    npm install microsoft-cognitiveservices-speech-sdk
    

リソース情報の取得

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Azure Cognitive Service for Speech リソース キーの環境変数とリージョンを設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • SPEECH_REGION 環境変数を設定するには、your-region をリソースのリージョンの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、your-endpointを Speech リソースの実際のエンドポイントに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

ファイルから音声を翻訳する

ファイルから音声を翻訳するには:

  1. 次の内容を 含む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 です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

    • 翻訳対象言語を変更するには、it を別のサポートされている言語に置き換えます。 いくつか例外はありますが、ロケールのダッシュ (-) 区切り記号の前にある言語コードのみを指定します。 たとえば、スペイン語 (スペイン) では、 es-ES の代わりに es を使用します。 言語を指定しない場合、既定の言語は en です。

  2. 新しいコンソール アプリケーションを実行して、ファイルからの音声認識を開始します。

    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 portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | パッケージ (ダウンロード) | GitHub 上のその他のサンプル

Speech SDK for Objective-C では音声翻訳がサポートされますが、そのガイドはまだ、ここには含まれていません。 作業を開始するには別のプログラミング言語を選択して概念について学ぶか、この記事の冒頭でリンクされている Objective-C のリファレンスとサンプルを参照してください。

リファレンス ドキュメント | パッケージ (ダウンロード) | GitHub 上のその他のサンプル

Speech SDK for Swift では音声翻訳がサポートされますが、そのガイドはまだ、ここには含まれていません。 作業を開始するには、別のプログラミング言語を選択して概念について学ぶか、この記事の冒頭でリンクされている、Swift のリファレンスとサンプルを参照してください。

リファレンス ドキュメント | パッケージ (PyPi) | GitHub 上のその他のサンプル

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

環境をセットアップする

Speech SDK Python は、Python パッケージ インデックス (PyPI) モジュールとして入手できます。 Speech SDK for Python は、Windows、Linux、macOS との互換性があります。

Python の 3.7 以降のバージョンをインストールします。 最初に、これ以上要件がないか、SDK のインストール ガイドを確認してください

環境変数の設定

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Speech リソース キーとエンドポイントの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、エンドポイントをリソースのエンドポイントのいずれかに置き換えます。
setx SPEECH_KEY your-key
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

マイクから音声を翻訳する

次の手順を実行して、新しいコンソール アプリケーションを作成します。

  1. 新しいプロジェクトを作成するコマンド プロンプトを開き、speech_translation.py という名前の新しいファイルを作成します。

  2. 次のコマンドを実行して、Speech 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 "ENDPOINT"
        # Replace with your own subscription key and endpoint, the endpoint is like : "https://YourServiceRegion.api.cognitive.microsoft.com"
        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()
    
  4. 音声認識言語を変更するには、en-US を別のサポートされている言語に置き換えます。 ダッシュ (-) を区切り記号として使って完全なロケールを指定します。 たとえば、スペイン語 (スペイン) の場合は、es-ES を作成します。 言語を指定しない場合、既定の言語は en-US です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

  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 秒間、または無音が検出されるまでの発話を文字起こししています。 多言語での会話を含め、より長いオーディオの継続的認識については、「音声を翻訳する方法」を参照してください。
  • オーディオ ファイルから音声を認識するには、use_default_microphone の代わりに filename を使用します。
    audio_config = speechsdk.audio.AudioConfig(filename="YourAudioFile.wav")
    
  • MP4 などの圧縮されたオーディオ ファイルの場合は、GStreamer をインストールして、PullAudioInputStream または PushAudioInputStream を使います。 詳しくは、「圧縮された入力オーディオを使用する方法」をご覧ください。

リソースをクリーンアップする

Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

リファレンス ドキュメント | パッケージ (npm) | GitHub 上のその他のサンプル | ライブラリのソース コード

このクイックスタートでは、ある言語の音声を別の言語のテキストに翻訳するためのアプリケーションを実行します。

ヒント

Foundry Tools Toolkit で Azure Speech を試して、Visual Studio Code でサンプルを簡単にビルドして実行します。

前提条件

  • Azure サブスクリプション。 無料で作成できます
  • Azure portal で Speech の Foundry リソースを作成します。
  • Speech リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。

環境をセットアップする

  1. translation-quickstart新しいフォルダーを作成し、次のコマンドを使用してクイック スタート フォルダーに移動します。

    mkdir translation-quickstart && cd translation-quickstart
    
  2. 次のコマンドで package.json を作成します。

    npm init -y
    
  3. 次のコマンドを使用して、package.json を ECMAScript に更新します。

    npm pkg set type=module
    
  4. 次のコマンドを使用して Speech SDK for JavaScript をインストールします。

    npm install microsoft-cognitiveservices-speech-sdk
    
  5. TypeScript エラーを回避するには、Node.js 型定義をインストールする必要があります。 次のコマンドを実行します。

    npm install --save-dev @types/node
    

リソース情報の取得

Foundry Tools にアクセスするには、アプリケーションを認証する必要があります。 この記事では、環境変数を使って資格情報を格納する方法について説明します。 その後、コードから環境変数にアクセスして、アプリケーションを認証できます。 運用環境では、より安全な方法を使用して資格情報を格納し、アクセスします。

重要

Microsoft Entra 認証と Azure リソースのマネージド ID を併用して、クラウドで実行されるアプリケーションに資格情報を格納しないようにすることをお勧めします。

API キーは慎重に使用してください。 API キーは、コードに直接含めないようにし、公開しないでください。 API キーを使用する場合は、Azure Key Vault に安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用して Azure Key Vault へのアクセスを制限してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関するページを参照してください。

AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。

Azure Cognitive Service for Speech リソース キーの環境変数とリージョンを設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  • SPEECH_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  • SPEECH_REGION 環境変数を設定するには、your-region をリソースのリージョンの 1 つに置き換えます。
  • ENDPOINT環境変数を設定するには、your-endpointを Speech リソースの実際のエンドポイントに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
setx ENDPOINT your-endpoint

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を読み込む再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

ファイルから音声を翻訳する

ファイルから音声を翻訳するには:

  1. 次の内容を 含む 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 です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。

    • 翻訳対象言語を変更するには、it を別のサポートされている言語に置き換えます。 いくつか例外はありますが、ロケールのダッシュ (-) 区切り記号の前にある言語コードのみを指定します。 たとえば、スペイン語 (スペイン) では、 es-ES の代わりに es を使用します。 言語を指定しない場合、既定の言語は en です。

  2. TypeScript コードをトランスパイルするために tsconfig.json ファイルを作成して、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"]
    }
    
  3. TypeScript から JavaScript にトランスパイルします。

    tsc
    

    成功した場合、このコマンドは出力を生成しません。

  4. 新しいコンソール アプリケーションを実行して、ファイルからの音声認識を開始します。

    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 portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。

音声テキスト変換 REST API リファレンス | Speech to Text REST API for short audio リファレンス | GitHub 上のその他のサンプル

REST API では、音声翻訳はサポートされていません。 このページの上部で、別のプログラミング言語またはツールを選択してください。

次のステップ