音声変換の概要Get started with speech-to-text

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の C# クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the C# quickstart samples on GitHub.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK のインストールInstall the Speech SDK

このパッケージ名の使用を開始する場合は、NuGet コンソールで Install-Package Microsoft.CognitiveServices.Speech を実行します。If you just want the package name to get started, run Install-Package Microsoft.CognitiveServices.Speech in the NuGet console.

プラットフォームごとのインストール手順については、次のリンクを参照してください。For platform-specific installation instructions, see the following links:

音声構成を作成するCreate a speech configuration

Speech SDK を使用して Speech Service を呼び出すには、SpeechConfig を作成する必要があります。To call the Speech service using the Speech SDK, you need to create a SpeechConfig. このクラスには、キー、関連付けられたリージョン、エンドポイント、ホスト、または認証トークンなど、ご利用のサブスクリプションに関する情報が含まれています。This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. キーとリージョンを使用して SpeechConfig を作成します。Create a SpeechConfig by using your key and region. キーとリージョンのペアを見つけるには、「キーとリージョンを見つける」ページを参照してください。See the Find keys and region page to find your key-region pair.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
    }
}

SpeechConfig を初期化するには、他にも次に示すようないくつかの方法があります。There are a few other ways that you can initialize a SpeechConfig:

  • エンドポイントの場合: Speech Service エンドポイントを渡します。With an endpoint: pass in a Speech service endpoint. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • ホストの場合: ホスト アドレスを渡します。With a host: pass in a host address. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • 認証トークンの場合: 認証トークンと、それに関連付けられたリージョンを渡します。With an authorization token: pass in an authorization token and the associated region.

注意

音声認識、音声合成、翻訳、またはインテント認識のどれを実行するのかに関係なく、必ず構成を作成します。Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

マイクから認識するRecognize from microphone

デバイス マイクを使用して音声を認識するには、FromDefaultMicrophoneInput() を使用して AudioConfig を作成します。To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). 次に、audioConfigspeechConfig を渡して SpeechRecognizer を初期化します。Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromMic(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        Console.WriteLine("Speak into your microphone.");
        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromMic(speechConfig);
    }
}

"特定の" オーディオ入力デバイスを使用したい場合、AudioConfig でデバイス ID を指定する必要があります。If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. 自分のオーディオ入力デバイスのデバイス ID を取得する方法をご覧ください。Learn how to get the device ID for your audio input device.

ファイルから認識するRecognize from file

マイクではなくオーディオ ファイルから音声を認識する場合でも、AudioConfig を作成する必要があります。If you want to recognize speech from an audio file instead of a microphone, you still need to create an AudioConfig. ただし、FromDefaultMicrophoneInput() を呼び出さずに、AudioConfig を作成する場合は、FromWavFileInput() を呼び出してファイル パスを渡します。However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromFile(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromWavFileInput("PathToFile.wav");
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromFile(speechConfig);
    }
}

インメモリ ストリームから認識するRecognize from in-memory stream

対象となる音声データが Blob Storage に格納されていたり、既存のメモリ内に byte[] や同様の生データ構造として存在していたりすることは、多くのユースケースで予想されます。For many use-cases, it is likely your audio data will be coming from blob storage, or otherwise already be in-memory as a byte[] or similar raw data structure. 以下の例では、PushAudioInputStream という、実質的に抽象化されたメモリ ストリームを使用して音声を認識します。The following example uses a PushAudioInputStream to recognize speech, which is essentially an abstracted memory stream. サンプル コードは、次の処理を実行します。The sample code does the following:

  • byte[] を引数として受け取る Write() 関数を使用して、生の音声データ (PCM) を PushAudioInputStream に書き込みます。Writes raw audio data (PCM) to the PushAudioInputStream using the Write() function, which accepts a byte[].
  • デモンストレーションとして、FileReader を使用して .wav ファイルを読み取ります。ただし、byte[] 形式の音声データが既にある場合は、これをスキップして直接そのコンテンツを入力ストリームに書き込むことができます。Reads a .wav file using a FileReader for demonstration purposes, but if you already have audio data in a byte[], you can skip directly to writing the content to the input stream.
  • 既定の形式は、16 ビット、16 kHz のモノラル PCM です。The default format is 16 bit, 16khz mono PCM. この形式をカスタマイズしたい場合は、静的関数 AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels) を使用して、CreatePushStream()AudioStreamFormat オブジェクトを渡してください。To customize the format, you can pass an AudioStreamFormat object to CreatePushStream() using the static function AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels).
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromStream(SpeechConfig speechConfig)
    {
        var reader = new BinaryReader(File.OpenRead("PathToFile.wav"));
        using var audioInputStream = AudioInputStream.CreatePushStream();
        using var audioConfig = AudioConfig.FromStreamInput(audioInputStream);
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        byte[] readBytes;
        do
        {
            readBytes = reader.ReadBytes(1024);
            audioInputStream.Write(readBytes, readBytes.Length);
        } while (readBytes.Length > 0);

        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromStream(speechConfig);
    }
}

プッシュ ストリームを入力として使用する場合、音声データは生の PCM であることが前提となります (ヘッダーをスキップするなど)。Using a push stream as input assumes that the audio data is a raw PCM, e.g. skipping any headers. 場合によっては、ヘッダーがスキップされていなくても、API は正しく機能します。しかし、最良の結果を得るためには、byte[] が "音声データの開始" 位置から始まるよう、ヘッダーを読み取るロジックの実装を検討してください。The API will still work in certain cases if the header has not been skipped, but for the best results consider implementing logic to read off the headers so the byte[] starts at the start of the audio data.

エラー処理Error handling

これまでの例では単に、認識されたテキストを result.text から取得していましたが、エラーやその他の応答を処理するためには、結果を処理するなんらかのコードを記述する必要があります。The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. 以下のコードでは、result.Reason プロパティを評価したうえで、次の処理を行っています。The following code evaluates the result.Reason property and:

  • 認識結果を出力します: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • 認識が一致しない場合は、ユーザーに通知します: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • エラーが検出された場合は、エラー メッセージを出力します: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(result);
        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 update the subscription info?");
        }
        break;
}

継続的認識Continuous recognition

これまでの例では、1 つの発話を認識する単発の認識を使用してきました。The previous examples use single-shot recognition, which recognizes a single utterance. 1 つの発話の終わりは、終了時の無音状態をリッスンするか、最大 15 秒のオーディオが処理されるまで待機することによって決定されます。The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

一方、認識を停止するタイミングを 制御 したい場合は、継続的認識を使用します。In contrast, continuous recognition is used when you want to control when to stop recognizing. この場合は、認識結果を取得するために、RecognizingRecognizedCanceled の各イベントをサブスクライブする必要があります。It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. 認識を停止するには、StopContinuousRecognitionAsync を呼び出す必要があります。To stop recognition, you must call StopContinuousRecognitionAsync. オーディオ入力ファイルに対して継続的認識を実行する方法の例を次に示します。Here's an example of how continuous recognition is performed on an audio input file.

まず、入力を定義し、SpeechRecognizer を初期化します。Start by defining the input and initializing a SpeechRecognizer:

using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

次に、音声認識の状態を管理する TaskCompletionSource<int> を作成します。Then create a TaskCompletionSource<int> to manage the state of speech recognition.

var stopRecognition = new TaskCompletionSource<int>();

次に、SpeechRecognizer から送信されたイベントをサブスクライブします。Next, subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: 中間的な認識結果を含むイベントのシグナル。Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: 最終的な認識結果を含むイベント (認識の試行が成功したことを示す) のシグナル。Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: 認識セッション (操作) の終了を示すイベントのシグナル。SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: キャンセルされた認識結果を含むイベント (結果としてキャンセルされた認識の試みまたは直接的なキャンセル要求、あるいは転送またはプロトコルの失敗を示す) のシグナル。Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.Recognizing += (s, e) =>
{
    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};

recognizer.Recognized += (s, e) =>
{
    if (e.Result.Reason == ResultReason.RecognizedSpeech)
    {
        Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
    }
    else if (e.Result.Reason == ResultReason.NoMatch)
    {
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
    }
};

recognizer.Canceled += (s, e) =>
{
    Console.WriteLine($"CANCELED: Reason={e.Reason}");

    if (e.Reason == CancellationReason.Error)
    {
        Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
        Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
        Console.WriteLine($"CANCELED: Did you update the subscription info?");
    }

    stopRecognition.TrySetResult(0);
};

recognizer.SessionStopped += (s, e) =>
{
    Console.WriteLine("\n    Session stopped event.");
    stopRecognition.TrySetResult(0);
};

すべての設定が完了したら、StartContinuousRecognitionAsync を呼び出して認識を開始します。With everything set up, call StartContinuousRecognitionAsync to start recognizing.

await recognizer.StartContinuousRecognitionAsync();

// Waits for completion. Use Task.WaitAny to keep the task rooted.
Task.WaitAny(new[] { stopRecognition.Task });

// make the following call at some point to stop recognition.
// await recognizer.StopContinuousRecognitionAsync();

ディクテーション モードDictation mode

継続的認識を使用する際、対応する "ディクテーションの有効化" 関数を使用することで、ディクテーション処理を有効にすることができます。When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. このモードでは、音声構成インスタンスが、句読点など文構造の単語の表現を解釈します。This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. たとえば、"Do you live in town question mark" という発話なら、"Do you live in town?" というテキストとして解釈されます。For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

ディクテーション モードを有効にするには、SpeechConfig 上で EnableDictation メソッドを使用します。To enable dictation mode, use the EnableDictation method on your SpeechConfig.

speechConfig.EnableDictation();

ソース言語を変更するChange source language

音声認識の一般的なタスクは、入力 (またはソース) 言語を指定することです。A common task for speech recognition is specifying the input (or source) language. 入力言語をイタリア語に変更する場合の方法を見てみましょう。Let's take a look at how you would change the input language to Italian. 自分のコード内で、ご利用の SpeechConfig を見つけて、そのすぐ下に次の行を追加します。In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.SpeechRecognitionLanguage = "it-IT";

SpeechRecognitionLanguage プロパティには、言語ロケールの書式指定文字列が必要です。The SpeechRecognitionLanguage property expects a language-locale format string. サポートされている ロケールまたは言語のリストの ロケール 列に任意の値を指定できます。You can provide any value in the Locale column in the list of supported locales/languages.

認識の精度を向上させるImprove recognition accuracy

フレーズ リストは、音声データ内で、人物の名前や特定の場所などの既知のフレーズを識別するために使用されます。Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. フレーズのリストを提供することにより、音声認識の精度を向上させることができます。By providing a list of phrases, you improve the accuracy of speech recognition.

例として、"Move to" という指示があり、会話で考えられる目的地として "Ward" がある場合、"Move to Ward" というエントリーを追加できます。As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". フレーズを追加すると、音声認識の実行時に、"Move toward" ではなく "Move to Ward" が認識される可能性が高くなります。Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

フレーズ リストには、単一の単語または完全なフレーズを追加できます。Single words or complete phrases can be added to a Phrase List. 認識中、フレーズのリスト内のエントリは、発話の途中にエントリが現れた場合でも単語またはフレーズの認識を強化するために使用されます。During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

重要

フレーズのリストの機能は、en-US、de-DE、en-AU、en-CA、en-GB、es-ES、es-MX、fr-CA、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN の言語で使用できます。The Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

フレーズ リストを使用するには、まず PhraseListGrammar オブジェクトを作成します。次に、AddPhrase を使用して特定の単語と語句を追加します。To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

PhraseListGrammar への変更は、次の認識時、または Speech Service への再接続後に有効になります。Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

var phraseList = PhraseListGrammar.FromRecognizer(recognizer);
phraseList.AddPhrase("Supercalifragilisticexpialidocious");

ご利用の語句リストをクリアする必要がある場合は、次のようにします。If you need to clear your phrase list:

phraseList.Clear();

認識の精度を向上させるためのその他のオプションOther options to improve recognition accuracy

フレーズ リストは、認識の精度を向上させるためのオプションの 1 つにすぎません。Phrase lists are only one option to improve recognition accuracy. 次のこともできます。You can also:

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の C++ クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the C++ quickstart samples on GitHub.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK のインストールInstall the Speech SDK

何らかの操作を行うには、事前に Speech SDK をインストールしておく必要があります。Before you can do anything, you'll need to install the Speech SDK. ご利用のプラットフォームに応じて、次の手順を行います。Depending on your platform, use the following instructions:

音声構成を作成するCreate a speech configuration

Speech SDK を使用して Speech Service を呼び出すには、SpeechConfig を作成する必要があります。To call the Speech service using the Speech SDK, you need to create a SpeechConfig. このクラスには、キー、関連付けられたリージョン、エンドポイント、ホスト、または認証トークンなど、ご利用のサブスクリプションに関する情報が含まれています。This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. キーとリージョンを使用して SpeechConfig を作成します。Create a SpeechConfig by using your key and region. キーとリージョンのペアを見つけるには、「キーとリージョンを見つける」ページを参照してください。See the Find keys and region page to find your key-region pair.

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;

auto config = SpeechConfig::FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

SpeechConfig を初期化するには、他にも次に示すようないくつかの方法があります。There are a few other ways that you can initialize a SpeechConfig:

  • エンドポイントの場合: Speech Service エンドポイントを渡します。With an endpoint: pass in a Speech service endpoint. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • ホストの場合: ホスト アドレスを渡します。With a host: pass in a host address. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • 認証トークンの場合: 認証トークンと、それに関連付けられたリージョンを渡します。With an authorization token: pass in an authorization token and the associated region.

注意

音声認識、音声合成、翻訳、またはインテント認識のどれを実行するのかに関係なく、必ず構成を作成します。Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

マイクから認識するRecognize from microphone

デバイス マイクを使用して音声を認識するには、FromDefaultMicrophoneInput() を使用して AudioConfig を作成します。To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). 次に、audioConfigconfig を渡して SpeechRecognizer を初期化します。Then initialize a SpeechRecognizer, passing your audioConfig and config.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
auto recognizer = SpeechRecognizer::FromConfig(config, audioConfig);

cout << "Speak into your microphone." << std::endl;
auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

"特定の" オーディオ入力デバイスを使用したい場合、AudioConfig でデバイス ID を指定する必要があります。 自分のオーディオ入力デバイスのデバイス ID を取得する方法をご覧ください。Learn how to get the device ID for your audio input device.

ファイルから認識するRecognize from file

マイクを使用するのでなくオーディオ ファイルから音声を認識する場合でも、AudioConfig を作成する必要があります。If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. ただし、FromDefaultMicrophoneInput() を呼び出さずに、AudioConfig を作成する場合は、FromWavFileInput() を呼び出してファイル パスを渡します。However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

音声を認識するRecognize speech

Speech SDK for C++ 用の 認識エンジン では、音声認識に使用できるいくつかの手法が公開されています。The Recognizer class for the Speech SDK for C++ exposes a few methods that you can use for speech recognition.

単発の認識Single-shot recognition

単発の認識では、1 つの発話が非同期的に認識されます。Single-shot recognition asynchronously recognizes a single utterance. 1 つの発話の終わりは、終了時の無音状態をリッスンするか、最大 15 秒のオーディオが処理されるまで待機することによって決定されます。The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. RecognizeOnceAsync を使用した非同期の単発認識の例を次に示します。Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

auto result = recognizer->RecognizeOnceAsync().get();

結果を処理するコードを記述する必要があります。You'll need to write some code to handle the result. このサンプルでは、result->Reason を評価します。This sample evaluates the result->Reason:

  • 認識結果を出力します: ResultReason::RecognizedSpeechPrints the recognition result: ResultReason::RecognizedSpeech
  • 認識が一致しない場合は、ユーザーに通知します: ResultReason::NoMatchIf there is no recognition match, inform the user: ResultReason::NoMatch
  • エラーが検出された場合は、エラー メッセージを出力します: ResultReason::CanceledIf an error is encountered, print the error message: ResultReason::Canceled
switch (result->Reason)
{
    case ResultReason::RecognizedSpeech:
        cout << "We recognized: " << result->Text << std::endl;
        break;
    case ResultReason::NoMatch:
        cout << "NOMATCH: Speech could not be recognized." << std::endl;
        break;
    case ResultReason::Canceled:
        {
            auto cancellation = CancellationDetails::FromResult(result);
            cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error) {
                cout << "CANCELED: ErrorCode= " << (int)cancellation->ErrorCode << std::endl;
                cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
        break;
    default:
        break;
}

継続的認識Continuous recognition

継続的認識は、単発の認識よりも少し複雑です。Continuous recognition is a bit more involved than single-shot recognition. この場合は、認識結果を取得するために、RecognizingRecognizedCanceled の各イベントをサブスクライブする必要があります。It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. 認識を停止するには、StopContinuousRecognitionAsync を呼び出す必要があります。To stop recognition, you must call StopContinuousRecognitionAsync. オーディオ入力ファイルに対して継続的認識を実行する方法の例を次に示します。Here's an example of how continuous recognition is performed on an audio input file.

入力を定義し、SpeechRecognizer を初期化することから始めましょう。Let's start by defining the input and initializing a SpeechRecognizer:

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

次に、音声認識の状態を管理する変数を作成してみましょう。Next, let's create a variable to manage the state of speech recognition. 開始するには、promise<void> を宣言します。認識の開始時に、それが間違いなく完了していないと見なすことができるからです。To start, we'll declare a promise<void>, since at the start of recognition we can safely assume that it's not finished.

promise<void> recognitionEnd;

SpeechRecognizer から送信されたイベントをサブスクライブします。We'll subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: 中間的な認識結果を含むイベントのシグナル。Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: 最終的な認識結果を含むイベント (認識の試行が成功したことを示す) のシグナル。Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: 認識セッション (操作) の終了を示すイベントのシグナル。SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: キャンセルされた認識結果を含むイベント (結果としてキャンセルされた認識の試みまたは直接的なキャンセル要求、あるいは転送またはプロトコルの失敗を示す) のシグナル。Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
    {
        cout << "Recognizing:" << e.Result->Text << std::endl;
    });

recognizer->Recognized.Connect([](const SpeechRecognitionEventArgs& e)
    {
        if (e.Result->Reason == ResultReason::RecognizedSpeech)
        {
            cout << "RECOGNIZED: Text=" << e.Result->Text 
                 << " (text could not be translated)" << std::endl;
        }
        else if (e.Result->Reason == ResultReason::NoMatch)
        {
            cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
    });

recognizer->Canceled.Connect([&recognitionEnd](const SpeechRecognitionCanceledEventArgs& e)
    {
        cout << "CANCELED: Reason=" << (int)e.Reason << std::endl;
        if (e.Reason == CancellationReason::Error)
        {
            cout << "CANCELED: ErrorCode=" << (int)e.ErrorCode << "\n"
                 << "CANCELED: ErrorDetails=" << e.ErrorDetails << "\n"
                 << "CANCELED: Did you update the subscription info?" << std::endl;

            recognitionEnd.set_value(); // Notify to stop recognition.
        }
    });

recognizer->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
    {
        cout << "Session stopped.";
        recognitionEnd.set_value(); // Notify to stop recognition.
    });

すべてが設定されると、StopContinuousRecognitionAsync を呼び出すことができます。With everything set up, we can call StopContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer->StartContinuousRecognitionAsync().get();

// Waits for recognition end.
recognitionEnd.get_future().get();

// Stops recognition.
recognizer->StopContinuousRecognitionAsync().get();

ディクテーション モードDictation mode

継続的認識を使用する際、対応する "ディクテーションの有効化" 関数を使用することで、ディクテーション処理を有効にすることができます。When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. このモードでは、音声構成インスタンスが、句読点など文構造の単語の表現を解釈します。This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. たとえば、"Do you live in town question mark" という発話なら、"Do you live in town?" というテキストとして解釈されます。For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

ディクテーション モードを有効にするには、SpeechConfig 上で EnableDictation メソッドを使用します。To enable dictation mode, use the EnableDictation method on your SpeechConfig.

config->EnableDictation();

ソース言語を変更するChange source language

音声認識の一般的なタスクは、入力 (またはソース) 言語を指定することです。A common task for speech recognition is specifying the input (or source) language. 入力言語をドイツ語に変更する場合の方法を見てみましょう。Let's take a look at how you would change the input language to German. 自分のコード内で、ご利用の SpeechConfig を見つけて、そのすぐ下に次の行を追加します。In your code, find your SpeechConfig, then add this line directly below it.

config->SetSpeechRecognitionLanguage("de-DE");

SetSpeechRecognitionLanguage は、引数として文字列を取るパラメーターです。SetSpeechRecognitionLanguage is a parameter that takes a string as an argument. サポートされているロケールまたは言語のリストに任意の値を指定できます。You can provide any value in the list of supported locales/languages.

認識の精度を向上させるImprove recognition accuracy

フレーズ リストは、音声データ内で、人物の名前や特定の場所などの既知のフレーズを識別するために使用されます。Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. フレーズのリストを提供することにより、音声認識の精度を向上させることができます。By providing a list of phrases, you improve the accuracy of speech recognition.

例として、"Move to" という指示があり、会話で考えられる目的地として "Ward" がある場合、"Move to Ward" というエントリーを追加できます。As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". フレーズを追加すると、音声認識の実行時に、"Move toward" ではなく "Move to Ward" が認識される可能性が高くなります。Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

フレーズ リストには、単一の単語または完全なフレーズを追加できます。Single words or complete phrases can be added to a Phrase List. 認識中、フレーズのリスト内のエントリは、発話の途中にエントリが現れた場合でも単語またはフレーズの認識を強化するために使用されます。During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

重要

フレーズのリストの機能は、en-US、de-DE、en-AU、en-CA、en-GB、es-ES、es-MX、fr-CA、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN の言語で使用できます。The Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

フレーズ リストを使用するには、まず PhraseListGrammar オブジェクトを作成します。次に、AddPhrase を使用して特定の単語と語句を追加します。To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

PhraseListGrammar への変更は、次の認識時、または Speech Service への再接続後に有効になります。Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

auto phraseListGrammar = PhraseListGrammar::FromRecognizer(recognizer);
phraseListGrammar->AddPhrase("Supercalifragilisticexpialidocious");

ご利用の語句リストをクリアする必要がある場合は、次のようにします。If you need to clear your phrase list:

phraseListGrammar->Clear();

認識の精度を向上させるためのその他のオプションOther options to improve recognition accuracy

フレーズ リストは、認識の精度を向上させるためのオプションの 1 つにすぎません。Phrase lists are only one option to improve recognition accuracy. 次のこともできます。You can also:

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の Go クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the Go quickstart samples on GitHub.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK のインストールInstall the Speech SDK

なんらかの操作を行うには、事前に Speech SDK for Go をインストールしておく必要があります。Before you can do anything, you'll need to install the Speech SDK for Go.

マイクからの音声テキスト変換Speech-to-text from microphone

既定のデバイスのマイクから音声認識を実行するには、以下のコード サンプルを使用します。Use the following code sample to run speech recognition from your default device microphone. subscription 変数と region 変数は、ご利用のサブスクリプション キーとリージョン キーに置き換えてください。Replace the variables subscription and region with your subscription and region keys. スクリプトを実行すると、既定のマイクで認識セッションが開始されてテキストが出力されます。Running the script will start a recognition session on your default microphone and output text.

package main

import (
    "bufio"
    "fmt"
    "os"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func sessionStartedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Started (ID=", event.SessionID, ")")
}

func sessionStoppedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Stopped (ID=", event.SessionID, ")")
}

func recognizingHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognizing:", event.Result.Text)
}

func recognizedHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognized:", event.Result.Text)
}

func cancelledHandler(event speech.SpeechRecognitionCanceledEventArgs) {
    defer event.Close()
    fmt.Println("Received a cancellation: ", event.ErrorDetails)
}

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"

    audioConfig, err := audio.NewAudioConfigFromDefaultMicrophoneInput()
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(sessionStartedHandler)
    speechRecognizer.SessionStopped(sessionStoppedHandler)
    speechRecognizer.Recognizing(recognizingHandler)
    speechRecognizer.Recognized(recognizedHandler)
    speechRecognizer.Canceled(cancelledHandler)
    speechRecognizer.StartContinuousRecognitionAsync()
    defer speechRecognizer.StopContinuousRecognitionAsync()
    bufio.NewReader(os.Stdin).ReadBytes('\n')
}

次のコマンドを実行して、Github でホストされるコンポーネントにリンクされる、go.mod ファイルを作成します。Run the following commands to create a go.mod file that links to components hosted on Github.

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

次に、コードをビルドして実行します。Now build and run the code.

go build
go run quickstart

SpeechConfig クラスと SpeechRecognizer クラスの詳細については、リファレンス ドキュメントを参照してください。See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

オーディオ ファイルからの音声テキスト変換Speech-to-text from audio file

オーディオ ファイルから音声認識を実行するには、以下のサンプルを使用します。Use the following sample to run speech recognition from an audio file. subscription 変数と region 変数は、ご利用のサブスクリプション キーとリージョン キーに置き換えてください。Replace the variables subscription and region with your subscription and region keys. 加えて、変数 file を .wav ファイルのパスに置き換えます。Additionally, replace the variable file with a path to a .wav file. スクリプトを実行すると、ファイルからの音声が認識され、結果がテキストとして出力されます。Running the script will recognize speech from the file, and output the text result.

package main

import (
    "fmt"
    "time"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"
    file := "path/to/file.wav"

    audioConfig, err := audio.NewAudioConfigFromWavFileInput(file)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Started (ID=", event.SessionID, ")")
    })
    speechRecognizer.SessionStopped(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Stopped (ID=", event.SessionID, ")")
    })

    task := speechRecognizer.RecognizeOnceAsync()
    var outcome speech.SpeechRecognitionOutcome
    select {
    case outcome = <-task:
    case <-time.After(5 * time.Second):
        fmt.Println("Timed out")
        return
    }
    defer outcome.Close()
    if outcome.Error != nil {
        fmt.Println("Got an error: ", outcome.Error)
    }
    fmt.Println("Got a recognition!")
    fmt.Println(outcome.Result.Text)
}

次のコマンドを実行して、Github でホストされるコンポーネントにリンクされる、go.mod ファイルを作成します。Run the following commands to create a go.mod file that links to components hosted on Github.

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

次に、コードをビルドして実行します。Now build and run the code.

go build
go run quickstart

SpeechConfig クラスと SpeechRecognizer クラスの詳細については、リファレンス ドキュメントを参照してください。See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の Java クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the Java quickstart samples on GitHub.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK のインストールInstall the Speech SDK

何らかの操作を行うには、事前に Speech SDK をインストールしておく必要があります。Before you can do anything, you'll need to install the Speech SDK. ご利用のプラットフォームに応じて、次の手順を行います。Depending on your platform, use the following instructions:

音声構成を作成するCreate a speech configuration

Speech SDK を使用して Speech Service を呼び出すには、SpeechConfig を作成する必要があります。To call the Speech service using the Speech SDK, you need to create a SpeechConfig. このクラスには、キー、関連付けられたリージョン、エンドポイント、ホスト、または認証トークンなど、ご利用のサブスクリプションに関する情報が含まれています。This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. キーとリージョンを使用して SpeechConfig を作成します。Create a SpeechConfig by using your key and region. キーとリージョンのペアを見つけるには、「キーとリージョンを見つける」ページを参照してください。See the Find keys and region page to find your key-region pair.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
    }
}

SpeechConfig を初期化するには、他にも次に示すようないくつかの方法があります。There are a few other ways that you can initialize a SpeechConfig:

  • エンドポイントの場合: Speech Service エンドポイントを渡します。With an endpoint: pass in a Speech service endpoint. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • ホストの場合: ホスト アドレスを渡します。With a host: pass in a host address. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • 認証トークンの場合: 認証トークンと、それに関連付けられたリージョンを渡します。With an authorization token: pass in an authorization token and the associated region.

注意

音声認識、音声合成、翻訳、またはインテント認識のどれを実行するのかに関係なく、必ず構成を作成します。Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

マイクから認識するRecognize from microphone

デバイス マイクを使用して音声を認識するには、fromDefaultMicrophoneInput() を使用して AudioConfig を作成します。To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). 次に、audioConfigconfig を渡して SpeechRecognizer を初期化します。Then initialize a SpeechRecognizer, passing your audioConfig and config.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromMic(speechConfig);
    }

    public static void fromMic(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
        SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        System.out.println("Speak into your microphone.");
        Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
        SpeechRecognitionResult result = task.get();
        System.out.println("RECOGNIZED: Text=" + result.getText());
    }
}

"特定の" オーディオ入力デバイスを使用したい場合、AudioConfig でデバイス ID を指定する必要があります。 自分のオーディオ入力デバイスのデバイス ID を取得する方法をご覧ください。Learn how to get the device ID for your audio input device.

ファイルから認識するRecognize from file

マイクを使用するのでなくオーディオ ファイルから音声を認識する場合でも、AudioConfig を作成する必要があります。If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. ただし、fromDefaultMicrophoneInput() を呼び出さずに、AudioConfig を作成する場合は、fromWavFileInput() を呼び出してファイル パスを渡します。However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), call fromWavFileInput() and pass the file path.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromFile(speechConfig);
    }

    public static void fromFile(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
        SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, audioConfig);
        
        Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
        SpeechRecognitionResult result = task.get();
        System.out.println("RECOGNIZED: Text=" + result.getText());
    }
}

エラー処理Error handling

これまでの例では単に、認識されたテキストを result.getText() を使用して取得していましたが、エラーやその他の応答を処理するためには、結果を処理するなんらかのコードを記述する必要があります。The previous examples simply get the recognized text using result.getText(), but to handle errors and other responses, you'll need to write some code to handle the result. 次の例では、result.getReason() を評価し、The following example evaluates result.getReason() and:

  • 認識結果を出力します: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • 認識が一致しない場合は、ユーザーに通知します: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • エラーが検出された場合は、エラー メッセージを出力します: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.getReason()) {
    case ResultReason.RecognizedSpeech:
        System.out.println("We recognized: " + result.getText());
        exitCode = 0;
        break;
    case ResultReason.NoMatch:
        System.out.println("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled: {
            CancellationDetails cancellation = CancellationDetails.fromResult(result);
            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 update the subscription info?");
            }
        }
        break;
}

継続的認識Continuous recognition

これまでの例では、1 つの発話を認識する単発の認識を使用してきました。The previous examples use single-shot recognition, which recognizes a single utterance. 1 つの発話の終わりは、終了時の無音状態をリッスンするか、最大 15 秒のオーディオが処理されるまで待機することによって決定されます。The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

一方、認識を停止するタイミングを 制御 したい場合は、継続的認識を使用します。In contrast, continuous recognition is used when you want to control when to stop recognizing. この場合は、認識結果を取得するために、recognizingrecognizedcanceled の各イベントをサブスクライブする必要があります。It requires you to subscribe to the recognizing, recognized, and canceled events to get the recognition results. 認識を停止するには、stopContinuousRecognitionAsync を呼び出す必要があります。To stop recognition, you must call stopContinuousRecognitionAsync. オーディオ入力ファイルに対して継続的認識を実行する方法の例を次に示します。Here's an example of how continuous recognition is performed on an audio input file.

入力を定義し、SpeechRecognizer を初期化することから始めましょう。Let's start by defining the input and initializing a SpeechRecognizer:

AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);

次に、音声認識の状態を管理する変数を作成してみましょう。Next, let's create a variable to manage the state of speech recognition. まず、クラス スコープで Semaphore を宣言します。To start, we'll declare a Semaphore at the class scope.

private static Semaphore stopTranslationWithFileSemaphore;

SpeechRecognizer から送信されたイベントをサブスクライブします。We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: 中間的な認識結果を含むイベントのシグナル。recognizing: Signal for events containing intermediate recognition results.
  • recognized: 最終的な認識結果を含むイベント (認識の試行が成功したことを示す) のシグナル。recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: 認識セッション (操作) の終了を示すイベントのシグナル。sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: キャンセルされた認識結果を含むイベント (結果としてキャンセルされた認識の試みまたは直接的なキャンセル要求、あるいは転送またはプロトコルの失敗を示す) のシグナル。canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
// First initialize the semaphore.
stopTranslationWithFileSemaphore = new Semaphore(0);

recognizer.recognizing.addEventListener((s, e) -> {
    System.out.println("RECOGNIZING: Text=" + e.getResult().getText());
});

recognizer.recognized.addEventListener((s, e) -> {
    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
        System.out.println("RECOGNIZED: Text=" + e.getResult().getText());
    }
    else if (e.getResult().getReason() == ResultReason.NoMatch) {
        System.out.println("NOMATCH: Speech could not be recognized.");
    }
});

recognizer.canceled.addEventListener((s, e) -> {
    System.out.println("CANCELED: Reason=" + e.getReason());

    if (e.getReason() == CancellationReason.Error) {
        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
        System.out.println("CANCELED: Did you update the subscription info?");
    }

    stopTranslationWithFileSemaphore.release();
});

recognizer.sessionStopped.addEventListener((s, e) -> {
    System.out.println("\n    Session stopped event.");
    stopTranslationWithFileSemaphore.release();
});

すべてが設定されると、startContinuousRecognitionAsync を呼び出すことができます。With everything set up, we can call startContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer.startContinuousRecognitionAsync().get();

// Waits for completion.
stopTranslationWithFileSemaphore.acquire();

// Stops recognition.
recognizer.stopContinuousRecognitionAsync().get();

ディクテーション モードDictation mode

継続的認識を使用する際、対応する "ディクテーションの有効化" 関数を使用することで、ディクテーション処理を有効にすることができます。When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. このモードでは、音声構成インスタンスが、句読点など文構造の単語の表現を解釈します。This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. たとえば、"Do you live in town question mark" という発話なら、"Do you live in town?" というテキストとして解釈されます。For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

ディクテーション モードを有効にするには、SpeechConfig 上で enableDictation メソッドを使用します。To enable dictation mode, use the enableDictation method on your SpeechConfig.

config.enableDictation();

ソース言語を変更するChange source language

音声認識の一般的なタスクは、入力 (またはソース) 言語を指定することです。A common task for speech recognition is specifying the input (or source) language. 入力言語をフランス語に変更する場合の方法を見てみましょう。Let's take a look at how you would change the input language to French. 自分のコード内で、ご利用の SpeechConfig を見つけて、そのすぐ下に次の行を追加します。In your code, find your SpeechConfig, then add this line directly below it.

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage は、引数として文字列を取るパラメーターです。setSpeechRecognitionLanguage is a parameter that takes a string as an argument. サポートされているロケールまたは言語のリストに任意の値を指定できます。You can provide any value in the list of supported locales/languages.

認識の精度を向上させるImprove recognition accuracy

フレーズ リストは、音声データ内で、人物の名前や特定の場所などの既知のフレーズを識別するために使用されます。Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. フレーズのリストを提供することにより、音声認識の精度を向上させることができます。By providing a list of phrases, you improve the accuracy of speech recognition.

例として、"Move to" という指示があり、会話で考えられる目的地として "Ward" がある場合、"Move to Ward" というエントリーを追加できます。As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". フレーズを追加すると、音声認識の実行時に、"Move toward" ではなく "Move to Ward" が認識される可能性が高くなります。Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

フレーズ リストには、単一の単語または完全なフレーズを追加できます。Single words or complete phrases can be added to a Phrase List. 認識中、フレーズのリスト内のエントリは、発話の途中にエントリが現れた場合でも単語またはフレーズの認識を強化するために使用されます。During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

重要

フレーズのリストの機能は、en-US、de-DE、en-AU、en-CA、en-GB、es-ES、es-MX、fr-CA、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN の言語で使用できます。The Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

フレーズ リストを使用するには、まず PhraseListGrammar オブジェクトを作成します。次に、AddPhrase を使用して特定の単語と語句を追加します。To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

PhraseListGrammar への変更は、次の認識時、または Speech Service への再接続後に有効になります。Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

PhraseListGrammar phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

ご利用の語句リストをクリアする必要がある場合は、次のようにします。If you need to clear your phrase list:

phraseList.clear();

認識の精度を向上させるためのその他のオプションOther options to improve recognition accuracy

フレーズ リストは、認識の精度を向上させるためのオプションの 1 つにすぎません。Phrase lists are only one option to improve recognition accuracy. 次のこともできます。You can also:

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の JavaScript クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the JavaScript quickstart samples on GitHub.

または、ブラウザーベースの環境で Speech SDK を使用する方法については、React サンプルを参照してください。Alternatively, see the React sample to learn how to use the Speech SDK in a browser-based environment.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK のインストールInstall the Speech SDK

何か実行するには、事前に Node.js 用 Speech SDK をインストールしておく必要があります。Before you can do anything, you need to install the Speech SDK for Node.js. パッケージ名のインストールだけが必要な場合は、npm install microsoft-cognitiveservices-speech-sdk を実行します。If you just want the package name to install, run npm install microsoft-cognitiveservices-speech-sdk. ガイド付きのインストール手順については、作業開始に関する記事を参照してください。For guided installation instructions, see the get started article.

SDK をインポートするには、次の require ステートメントを使用します。Use the following require statement to import the SDK.

const sdk = require("microsoft-cognitiveservices-speech-sdk");

require の詳細については、require に関するドキュメントを参照してください。For more information on require, see the require documentation.

音声構成を作成するCreate a speech configuration

Speech SDK を使用して Speech Service を呼び出すには、SpeechConfig を作成する必要があります。To call the Speech service using the Speech SDK, you need to create a SpeechConfig. このクラスには、キー、関連付けられたリージョン、エンドポイント、ホスト、または認証トークンなど、ご利用のサブスクリプションに関する情報が含まれています。This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. キーとリージョンを使用して SpeechConfig を作成します。Create a SpeechConfig using your key and region. キーとリージョンのペアを見つけるには、「キーとリージョンを見つける」ページを参照してください。See the Find keys and region page to find your key-region pair.

const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

SpeechConfig を初期化するには、他にも次に示すようないくつかの方法があります。There are a few other ways that you can initialize a SpeechConfig:

  • エンドポイントの場合: Speech Service エンドポイントを渡します。With an endpoint: pass in a Speech service endpoint. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • ホストの場合: ホスト アドレスを渡します。With a host: pass in a host address. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • 認証トークンの場合: 認証トークンと、それに関連付けられたリージョンを渡します。With an authorization token: pass in an authorization token and the associated region.

注意

音声認識、音声合成、翻訳、またはインテント認識のどれを実行するのかに関係なく、必ず構成を作成します。Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

マイクから認識する (ブラウザーのみ)Recognize from microphone (Browser only)

マイクからの音声認識は、Node.js ではサポートされておらず、ブラウザー ベースの JavaScript 環境でのみサポートされています。Recognizing speech from a microphone is not supported in Node.js, and is only supported in a browser-based JavaScript environment. マイクからの音声変換の実装を確認するには、GitHub の React サンプルを参照してください。See the React sample on GitHub to see the speech-to-text from microphone implementation.

注意

"特定の" オーディオ入力デバイスを使用したい場合、AudioConfig でデバイス ID を指定する必要があります。If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. 自分のオーディオ入力デバイスのデバイス ID を取得する方法をご覧ください。Learn how to get the device ID for your audio input device.

ファイルから認識するRecognize from file

オーディオ ファイルから音声を認識するには、Buffer オブジェクトを受け入れる fromWavFileInput() を使用して AudioConfig を作成します。To recognize speech from an audio file, create an AudioConfig using fromWavFileInput() which accepts a Buffer object. 次に、audioConfigspeechConfig を渡して SpeechRecognizer を初期化します。Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

function fromFile() {
    let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
    let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

    recognizer.recognizeOnceAsync(result => {
        console.log(`RECOGNIZED: Text=${result.text}`);
        recognizer.close();
    });
}
fromFile();

インメモリ ストリームから認識するRecognize from in-memory stream

対象となる音声データが Blob Storage に格納されていたり、既存のメモリ内に ArrayBuffer や同様の生データ構造として存在していたりすることは、多くのユースケースで予想されます。For many use-cases, it is likely your audio data will be coming from blob storage, or otherwise already be in-memory as an ArrayBuffer or similar raw data structure. コード例を次に示します。The following code:

  • createPushStream() を使用してプッシュ ストリームを作成します。Creates a push stream using createPushStream().
  • デモンストレーションとして、fs.createReadStream を使用して .wav ファイルを読み取ります。ただし、ArrayBuffer 形式の音声データが既にある場合は、これをスキップして直接そのコンテンツを入力ストリームに書き込むことができます。Reads a .wav file using fs.createReadStream for demonstration purposes, but if you already have audio data in an ArrayBuffer, you can skip directly to writing the content to the input stream.
  • プッシュ ストリームを使用してオーディオ構成を作成します。Creates an audio config using the push stream.
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

function fromStream() {
    let pushStream = sdk.AudioInputStream.createPushStream();

    fs.createReadStream("YourAudioFile.wav").on('data', function(arrayBuffer) {
        pushStream.write(arrayBuffer.slice());
    }).on('end', function() {
        pushStream.close();
    });
 
    let audioConfig = sdk.AudioConfig.fromStreamInput(pushStream);
    let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
    recognizer.recognizeOnceAsync(result => {
        console.log(`RECOGNIZED: Text=${result.text}`);
        recognizer.close();
    });
}
fromStream();

プッシュ ストリームを入力として使用する場合、音声データは生の PCM であることが前提となります (ヘッダーをスキップするなど)。Using a push stream as input assumes that the audio data is a raw PCM, e.g. skipping any headers. 場合によっては、ヘッダーがスキップされていなくても、API は正しく機能します。しかし、最良の結果を得るためには、fs が "音声データの開始" 位置から始まるよう、ヘッダーを読み取るロジックの実装を検討してください。The API will still work in certain cases if the header has not been skipped, but for the best results consider implementing logic to read off the headers so the fs starts at the start of the audio data.

エラー処理Error handling

これまでの例では単に、認識されたテキストを result.text から取得していましたが、エラーやその他の応答を処理するためには、結果を処理するなんらかのコードを記述する必要があります。The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. 以下のコードでは、result.reason プロパティを評価したうえで、次の処理を行っています。The following code evaluates the result.reason property and:

  • 認識結果を出力します: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • 認識が一致しない場合は、ユーザーに通知します: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • エラーが検出された場合は、エラー メッセージを出力します: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.reason) {
    case ResultReason.RecognizedSpeech:
        console.log(`RECOGNIZED: Text=${result.text}`);
        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 update the subscription info?");
        }
        break;
    }

継続的認識Continuous recognition

これまでの例では、1 つの発話を認識する単発の認識を使用してきました。The previous examples use single-shot recognition, which recognizes a single utterance. 1 つの発話の終わりは、終了時の無音状態をリッスンするか、最大 15 秒のオーディオが処理されるまで待機することによって決定されます。The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

一方、認識を停止するタイミングを 制御 したい場合は、継続的認識を使用します。In contrast, continuous recognition is used when you want to control when to stop recognizing. この場合は、認識結果を取得するために、RecognizingRecognizedCanceled の各イベントをサブスクライブする必要があります。It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. 認識を停止するには、stopContinuousRecognitionAsync を呼び出す必要があります。To stop recognition, you must call stopContinuousRecognitionAsync. オーディオ入力ファイルに対して継続的認識を実行する方法の例を次に示します。Here's an example of how continuous recognition is performed on an audio input file.

まず、入力を定義し、SpeechRecognizer を初期化します。Start by defining the input and initializing a SpeechRecognizer:

const recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

次に、SpeechRecognizer から送信されたイベントをサブスクライブします。Next, subscribe to the events sent from the SpeechRecognizer.

  • recognizing: 中間的な認識結果を含むイベントのシグナル。recognizing: Signal for events containing intermediate recognition results.
  • recognized: 最終的な認識結果を含むイベント (認識の試行が成功したことを示す) のシグナル。recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: 認識セッション (操作) の終了を示すイベントのシグナル。sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: キャンセルされた認識結果を含むイベント (結果としてキャンセルされた認識の試みまたは直接的なキャンセル要求、あるいは転送またはプロトコルの失敗を示す) のシグナル。canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.recognizing = (s, e) => {
    console.log(`RECOGNIZING: Text=${e.result.text}`);
};

recognizer.recognized = (s, e) => {
    if (e.result.reason == ResultReason.RecognizedSpeech) {
        console.log(`RECOGNIZED: Text=${e.result.text}`);
    }
    else if (e.result.reason == ResultReason.NoMatch) {
        console.log("NOMATCH: Speech could not be recognized.");
    }
};

recognizer.canceled = (s, e) => {
    console.log(`CANCELED: Reason=${e.reason}`);

    if (e.reason == CancellationReason.Error) {
        console.log(`"CANCELED: ErrorCode=${e.errorCode}`);
        console.log(`"CANCELED: ErrorDetails=${e.errorDetails}`);
        console.log("CANCELED: Did you update the subscription info?");
    }

    recognizer.stopContinuousRecognitionAsync();
};

recognizer.sessionStopped = (s, e) => {
    console.log("\n    Session stopped event.");
    recognizer.stopContinuousRecognitionAsync();
};

すべての設定が完了したら、startContinuousRecognitionAsync を呼び出して認識を開始します。With everything set up, call startContinuousRecognitionAsync to start recognizing.

recognizer.startContinuousRecognitionAsync();

// make the following call at some point to stop recognition.
// recognizer.StopContinuousRecognitionAsync();

ディクテーション モードDictation mode

継続的認識を使用する際、対応する "ディクテーションの有効化" 関数を使用することで、ディクテーション処理を有効にすることができます。When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. このモードでは、音声構成インスタンスが、句読点など文構造の単語の表現を解釈します。This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. たとえば、"Do you live in town question mark" という発話なら、"Do you live in town?" というテキストとして解釈されます。For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

ディクテーション モードを有効にするには、SpeechConfig 上で enableDictation メソッドを使用します。To enable dictation mode, use the enableDictation method on your SpeechConfig.

speechConfig.enableDictation();

ソース言語を変更するChange source language

音声認識の一般的なタスクは、入力 (またはソース) 言語を指定することです。A common task for speech recognition is specifying the input (or source) language. 入力言語をイタリア語に変更する場合の方法を見てみましょう。Let's take a look at how you would change the input language to Italian. 自分のコード内で、ご利用の SpeechConfig を見つけて、そのすぐ下に次の行を追加します。In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.speechRecognitionLanguage = "it-IT";

speechRecognitionLanguage プロパティには、言語ロケールの書式指定文字列が必要です。The speechRecognitionLanguage property expects a language-locale format string. サポートされている ロケールまたは言語のリストの ロケール 列に任意の値を指定できます。You can provide any value in the Locale column in the list of supported locales/languages.

認識の精度を向上させるImprove recognition accuracy

フレーズ リストは、音声データ内で、人物の名前や特定の場所などの既知のフレーズを識別するために使用されます。Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. フレーズのリストを提供することにより、音声認識の精度を向上させることができます。By providing a list of phrases, you improve the accuracy of speech recognition.

例として、"Move to" という指示があり、会話で考えられる目的地として "Ward" がある場合、"Move to Ward" というエントリーを追加できます。As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". フレーズを追加すると、音声認識の実行時に、"Move toward" ではなく "Move to Ward" が認識される可能性が高くなります。Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

フレーズ リストには、単一の単語または完全なフレーズを追加できます。Single words or complete phrases can be added to a Phrase List. 認識中、フレーズのリスト内のエントリは、発話の途中にエントリが現れた場合でも単語またはフレーズの認識を強化するために使用されます。During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

重要

フレーズのリストの機能は、en-US、de-DE、en-AU、en-CA、en-GB、es-ES、es-MX、fr-CA、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN の言語で使用できます。The Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

フレーズ リストを使用するには、まず PhraseListGrammar オブジェクトを作成します。次に、addPhrase を使用して特定の単語と語句を追加します。To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

PhraseListGrammar への変更は、次の認識時、または Speech Service への再接続後に有効になります。Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

const phraseList = sdk.PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

ご利用の語句リストをクリアする必要がある場合は、次のようにします。If you need to clear your phrase list:

phraseList.clear();

認識の精度を向上させるためのその他のオプションOther options to improve recognition accuracy

フレーズ リストは、認識の精度を向上させるためのオプションの 1 つにすぎません。Phrase lists are only one option to improve recognition accuracy. 次のこともできます。You can also:

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このサンプルでは、アプリや製品で Speech SDK を使用して、高品質の音声テキスト変換を実行する方法について説明します。In this sample, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

GitHub の React サンプルReact sample on GitHub

ブラウザー ベースの JavaScript 環境で Speech SDK を使用する方法については、GitHub の React サンプルにアクセスしてください。Go to the React sample on GitHub to learn how to use the Speech SDK in a browser-based JavaScript environment. このサンプルでは、認証トークンの交換と管理を行うための設計パターンの例と、音声変換のためにマイクまたはファイルからオーディオをキャプチャする方法を紹介しています。This sample shows design pattern examples for authentication token exchange and management, and capturing audio from a microphone or file for speech-to-text conversions.

また、Node.js クイックスタートで使用されている設計パターンは、ブラウザー環境でも使用できます。Additionally, the design patterns used in the Node.js quickstart can also be used in a browser environment.

Swift および Objective-C 用の Speech SDK を使用して、音声からテキストへの文字起こしができます。You can transcribe speech into text using the Speech SDK for Swift and Objective-C.

前提条件Prerequisites

以下のサンプルは、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。The following samples assume that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

Speech SDK とサンプルをインストールするInstall Speech SDK and samples

Cognitive Services Speech SDK には、iOS と Mac 向けに Objective-C と Swift で作成されたサンプルが含まれています。The Cognitive Services Speech SDK contains samples written in in Swift and Objective-C for iOS and Mac. リンクをクリックして、各サンプルのインストール手順をご覧ください。Click a link to see installation instructions for each sample:

オンラインの「Objective-C 向け Speech SDK リファレンス」もご覧いただけます。We also provide an online Speech SDK for Objective-C Reference.

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech SDK を使用し、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

記事をスキップして GitHub 上のサンプルにアクセスするSkip to samples on GitHub

この記事をスキップしてサンプル コードをご覧になりたい方は、GitHub 上の Python クイックスタート サンプルを参照してください。If you want to skip straight to sample code, see the Python quickstart samples on GitHub.

前提条件Prerequisites

この記事では、以下のことを前提としています。This article assumes:

Speech SDK をインストールしてインポートするInstall and import the Speech SDK

何らかの操作を行うには、事前に Speech SDK をインストールしておく必要があります。Before you can do anything, you'll need to install the Speech SDK.

pip install azure-cognitiveservices-speech

macOS を使用していて、インストールの問題が発生した場合は、まず次のコマンドを実行することが必要な場合があります。If you're on macOS and run into install issues, you may need to run this command first.

python3 -m pip install --upgrade pip

Speech SDK がインストールされたら、それを Python プロジェクトにインポートします。After the Speech SDK is installed, import it into your Python project.

import azure.cognitiveservices.speech as speechsdk

音声構成を作成するCreate a speech configuration

Speech SDK を使用して Speech Service を呼び出すには、SpeechConfig を作成する必要があります。To call the Speech service using the Speech SDK, you need to create a SpeechConfig. このクラスには、キー、関連付けられたリージョン、エンドポイント、ホスト、または認証トークンなど、ご利用のサブスクリプションに関する情報が含まれています。This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. キーとリージョンを使用して SpeechConfig を作成します。Create a SpeechConfig using your key and region. キーとリージョンのペアを見つけるには、「キーとリージョンを見つける」ページを参照してください。See the Find keys and region page to find your key-region pair.

speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")

SpeechConfig を初期化するには、他にも次に示すようないくつかの方法があります。There are a few other ways that you can initialize a SpeechConfig:

  • エンドポイントの場合: Speech Service エンドポイントを渡します。With an endpoint: pass in a Speech service endpoint. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • ホストの場合: ホスト アドレスを渡します。With a host: pass in a host address. キーまたは認証トークンは省略可能です。A key or authorization token is optional.
  • 認証トークンの場合: 認証トークンと、それに関連付けられたリージョンを渡します。With an authorization token: pass in an authorization token and the associated region.

注意

音声認識、音声合成、翻訳、またはインテント認識のどれを実行するのかに関係なく、必ず構成を作成します。Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

マイクから認識するRecognize from microphone

デバイス マイクを使用して音声を認識するには、AudioConfig を渡さずに SpeechRecognizer を作成し、speech_config を渡します。To recognize speech using your device microphone, simply create a SpeechRecognizer without passing an AudioConfig, and pass your speech_config.

import azure.cognitiveservices.speech as speechsdk

def from_mic():
    speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)
    
    print("Speak into your microphone.")
    result = speech_recognizer.recognize_once_async().get()
    print(result.text)

from_mic()

"特定の" オーディオ入力デバイスを使用したい場合、AudioConfig でデバイス ID を指定し、それを SpeechRecognizer コンストラクターの audio_config パラメーターに渡す必要があります。If you want to use a specific audio input device, you need to specify the device ID in an AudioConfig, and pass it to the SpeechRecognizer constructor's audio_config param. 自分のオーディオ入力デバイスのデバイス ID を取得する方法をご覧ください。Learn how to get the device ID for your audio input device.

ファイルから認識するRecognize from file

マイクを使用するのでなくオーディオ ファイルから音声を認識する場合、AudioConfig を作成し、filename パラメーターを使用します。If you want to recognize speech from an audio file instead of using a microphone, create an AudioConfig and use the filename parameter.

import azure.cognitiveservices.speech as speechsdk

def from_file():
    speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")
    audio_input = speechsdk.AudioConfig(filename="your_file_name.wav")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_input)
    
    result = speech_recognizer.recognize_once_async().get()
    print(result.text)

from_file()

エラー処理Error handling

これまでの例では単に、認識されたテキストを result.text から取得していましたが、エラーやその他の応答を処理するためには、結果を処理するなんらかのコードを記述する必要があります。The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. 以下のコードでは、result.reason プロパティを評価したうえで、次の処理を行っています。The following code evaluates the result.reason property and:

  • 認識結果を出力します: speechsdk.ResultReason.RecognizedSpeechPrints the recognition result: speechsdk.ResultReason.RecognizedSpeech
  • 認識が一致しない場合は、ユーザーに通知します: speechsdk.ResultReason.NoMatch If there is no recognition match, inform the user: speechsdk.ResultReason.NoMatch
  • エラーが検出された場合は、エラー メッセージを出力します: speechsdk.ResultReason.CanceledIf an error is encountered, print the error message: speechsdk.ResultReason.Canceled
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(result.text))
elif result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = 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))

継続的認識Continuous recognition

これまでの例では、1 つの発話を認識する単発の認識を使用してきました。The previous examples use single-shot recognition, which recognizes a single utterance. 1 つの発話の終わりは、終了時の無音状態をリッスンするか、最大 15 秒のオーディオが処理されるまで待機することによって決定されます。The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

一方、認識を停止するタイミングを 制御 したい場合は、継続的認識を使用します。In contrast, continuous recognition is used when you want to control when to stop recognizing. 認識結果を取得するには EventSignal に接続する必要があります。認識を停止するには、stop_continuous_recognition() または stop_continuous_recognition() を呼び出す必要があります。It requires you to connect to the EventSignal to get the recognition results, and to stop recognition, you must call stop_continuous_recognition() or stop_continuous_recognition(). オーディオ入力ファイルに対して継続的認識を実行する方法の例を次に示します。Here's an example of how continuous recognition is performed on an audio input file.

入力を定義し、SpeechRecognizer を初期化することから始めましょう。Let's start by defining the input and initializing a SpeechRecognizer:

audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)

次に、音声認識の状態を管理する変数を作成してみましょう。Next, let's create a variable to manage the state of speech recognition. 開始するには、これを False に設定します。認識の開始時に、それが間違いなく完了していないと見なすことができるからです。To start, we'll set this to False, since at the start of recognition we can safely assume that it's not finished.

done = False

次に、evt が受信されたときに、継続的認識を停止するコールバックを作成します。Now, we're going to create a callback to stop continuous recognition when an evt is received. 注意すべき点がいくつかあります。There's a few things to keep in mind.

  • evt が受信されると、evt メッセージが出力されます。When an evt is received, the evt message is printed.
  • evt が受信されたら、認識を停止するために stop_continuous_recognition() が呼び出されます。After an evt is received, stop_continuous_recognition() is called to stop recognition.
  • 認識状態が True に変更されます。The recognition state is changed to True.
def stop_cb(evt):
    print('CLOSING on {}'.format(evt))
    speech_recognizer.stop_continuous_recognition()
    nonlocal done
    done = True

以下のコード サンプルでは、SpeechRecognizer から送信されたイベントにコールバックを接続する方法を示します。This code sample shows how to connect callbacks to events sent from the SpeechRecognizer.

  • recognizing: 中間的な認識結果を含むイベントのシグナル。recognizing: Signal for events containing intermediate recognition results.
  • recognized: 最終的な認識結果を含むイベント (認識の試行が成功したことを示す) のシグナル。recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • session_started: 認識セッション (操作) の開始を示すイベントのシグナル。session_started: Signal for events indicating the start of a recognition session (operation).
  • session_stopped: 認識セッション (操作) の終了を示すイベントのシグナル。session_stopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: キャンセルされた認識結果を含むイベント (結果としてキャンセルされた認識の試みまたは直接的なキャンセル要求、あるいは転送またはプロトコルの失敗を示す) のシグナル。canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
speech_recognizer.recognizing.connect(lambda evt: print('RECOGNIZING: {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('RECOGNIZED: {}'.format(evt)))
speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('SESSION STOPPED {}'.format(evt)))
speech_recognizer.canceled.connect(lambda evt: print('CANCELED {}'.format(evt)))

speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)

すべてが設定されると、start_continuous_recognition() を呼び出すことができます。With everything set up, we can call start_continuous_recognition().

speech_recognizer.start_continuous_recognition()
while not done:
    time.sleep(.5)

ディクテーション モードDictation mode

継続的認識を使用する際、対応する "ディクテーションの有効化" 関数を使用することで、ディクテーション処理を有効にすることができます。When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. このモードでは、音声構成インスタンスが、句読点など文構造の単語の表現を解釈します。This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. たとえば、"Do you live in town question mark" という発話なら、"Do you live in town?" というテキストとして解釈されます。For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

ディクテーション モードを有効にするには、SpeechConfig 上で enable_dictation() メソッドを使用します。To enable dictation mode, use the enable_dictation() method on your SpeechConfig.

SpeechConfig.enable_dictation()

ソース言語を変更するChange source language

音声認識の一般的なタスクは、入力 (またはソース) 言語を指定することです。A common task for speech recognition is specifying the input (or source) language. 入力言語をドイツ語に変更する場合の方法を見てみましょう。Let's take a look at how you would change the input language to German. 自分のコード内で、ご利用の SpeechConfig を見つけて、そのすぐ下に次の行を追加します。In your code, find your SpeechConfig, then add this line directly below it.

speech_config.speech_recognition_language="de-DE"

speech_recognition_language は、引数として文字列を取るパラメーターです。speech_recognition_language is a parameter that takes a string as an argument. サポートされているロケールまたは言語のリストに任意の値を指定できます。You can provide any value in the list of supported locales/languages.

認識の精度を向上させるImprove recognition accuracy

フレーズ リストは、音声データ内で、人物の名前や特定の場所などの既知のフレーズを識別するために使用されます。Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. フレーズのリストを提供することにより、音声認識の精度を向上させることができます。By providing a list of phrases, you improve the accuracy of speech recognition.

例として、"Move to" という指示があり、会話で考えられる目的地として "Ward" がある場合、"Move to Ward" というエントリーを追加できます。As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". フレーズを追加すると、音声認識の実行時に、"Move toward" ではなく "Move to Ward" が認識される可能性が高くなります。Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

フレーズ リストには、単一の単語または完全なフレーズを追加できます。Single words or complete phrases can be added to a Phrase List. 認識中、フレーズのリスト内のエントリは、発話の途中にエントリが現れた場合でも単語またはフレーズの認識を強化するために使用されます。During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

重要

フレーズのリストの機能は、en-US、de-DE、en-AU、en-CA、en-GB、es-ES、es-MX、fr-CA、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN の言語で使用できます。The Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

フレーズ リストを使用するには、まず PhraseListGrammar オブジェクトを作成します。次に、addPhrase を使用して特定の単語と語句を追加します。To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

PhraseListGrammar への変更は、次の認識時、または Speech Service への再接続後に有効になります。Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

phrase_list_grammar = speechsdk.PhraseListGrammar.from_recognizer(reco)
phrase_list_grammar.addPhrase("Supercalifragilisticexpialidocious")

ご利用の語句リストをクリアする必要がある場合は、次のようにします。If you need to clear your phrase list:

phrase_list_grammar.clear()

認識の精度を向上させるためのその他のオプションOther options to improve recognition accuracy

フレーズ リストは、認識の精度を向上させるためのオプションの 1 つにすぎません。Phrase lists are only one option to improve recognition accuracy. 次のこともできます。You can also:

このクイックスタートでは、Speech Service と cURL を使用して音声をテキストに変換する方法について学習します。In this quickstart, you learn how to convert speech to text using the Speech service and cURL.

音声テキスト変換の概念の概要については、概要に関する記事を参照してください。For a high-level look at Speech-to-Text concepts, see the overview article.

前提条件Prerequisites

この記事は、Azure アカウントと Speech Service サブスクリプションをお持ちであることを前提としています。This article assumes that you have an Azure account and Speech service subscription. アカウントとサブスクリプションをお持ちでない場合は、Speech Service を無料でお試しくださいIf you don't have an account and subscription, try the Speech service for free.

音声をテキストに変換するConvert speech to text

コマンド プロンプトで、次のコマンドを実行します。At a command prompt, run the following command. 次の値をコマンドに挿入する必要があります。You will need to insert the following values into the command.

  • 音声サービスのサブスクリプション キー。Your Speech service subscription key.
  • Speech Service のリージョン。Your Speech service region.
  • 入力オーディオ ファイルのパス。The input audio file path. テキスト読み上げを使用してオーディオ ファイルを生成できます。You can generate audio files using text-to-speech.
curl --location --request POST 'https://INSERT_REGION_HERE.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US' \
--header 'Ocp-Apim-Subscription-Key: INSERT_SUBSCRIPTION_KEY_HERE' \
--header 'Content-Type: audio/wav' \
--data-binary 'INSERT_AUDIO_FILE_PATH_HERE'

次のような応答を受け取ります。You should receive a response like the following one.

{
    "RecognitionStatus": "Success",
    "DisplayText": "My voice is my passport, verify me.",
    "Offset": 6600000,
    "Duration": 32100000
}

詳細については、音声テキスト変換 REST API リファレンスを参照してください。For more information see the speech-to-text REST API reference.

Speech Service の中核となる機能の 1 つは、人間の音声を認識して文字起こしをする機能です (多くの場合、音声テキスト変換と呼ばれます)。One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). このクイックスタートでは、アプリや製品で Speech CLI を使用して、高品質の音声テキスト変換を実行する方法について説明します。In this quickstart, you learn how to use the Speech CLI in your apps and products to perform high-quality speech-to-text conversion.

ダウンロードしてインストールするDownload and install

Windows に Speech CLI をインストールするには、次の手順に従います。Follow these steps to install the Speech CLI on Windows:

  1. Windows では、お使いのプラットフォームに対応した Microsoft Visual Studio 2019 の Visual C++ 再頒布可能パッケージが必要です。On Windows, you need the Microsoft Visual C++ Redistributable for Visual Studio 2019 for your platform. これを初めてインストールする場合、再起動が必要になる場合があります。Installing this for the first time may require a restart.

  2. .NET Core 3.1 SDK をインストールします。Install .NET Core 3.1 SDK.

  3. 次のコマンドを入力して、NuGet を使用して Speech CLI をインストールします。Install the Speech CLI using NuGet by entering this command:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    

spx」と入力して、Speech CLI のヘルプを表示します。Type spx to see help for the Speech CLI.

注意

NuGet の代わりに、Speech CLI の zip アーカイブをダウンロードして抽出し、spx-zips ディレクトリからお使いのプラットフォームを検索して抽出し、spx パスをシステムの PATH 変数に追加することができます。As an alternative to NuGet, you can download and extract the Speech CLI zip archive, find and extract your platform from the spx-zips directory, and add the spx path to your system PATH variable.

フォントの制限事項Font limitations

Windows の Speech CLI では、ローカル コンピューター上のコマンド プロンプトで使用できるフォントのみを表示できます。On Windows, the Speech CLI can only show fonts available to the command prompt on the local computer. Windows ターミナルでは、Speech CLI によって対話的に生成されるすべてのフォントがサポートされます。Windows Terminal supports all fonts produced interactively by the Speech CLI.

ファイルに出力すると、メモ帳などのテキスト エディターや、Microsoft Edge などの Web ブラウザーでも、すべてのフォントを表示できます。If you output to a file, a text editor like Notepad or a web browser like Microsoft Edge can also show all fonts.

サブスクリプション構成の作成Create subscription config

Speech CLI の使用を開始するには、Speech サブスクリプション キーとリージョン識別子を入力する必要があります。To start using the Speech CLI, you need to enter your Speech subscription key and region identifier. Speech Service を無料で試す」の手順に従って、これらの資格情報を取得します。Get these credentials by following steps in Try the Speech service for free. サブスクリプション キーとリージョン識別子 (たとえば、Once you have your subscription key and region identifier (ex. eastuswestus) を入手したら、次のコマンドを実行します。eastus, westus), run the following commands.

spx config @key --set SUBSCRIPTION-KEY
spx config @region --set REGION

これで、今後の SPX 要求のためのサブスクリプション認証が格納されるようになりました。Your subscription authentication is now stored for future SPX requests. これらの格納されている値のいずれかを削除する必要がある場合は、spx config @region --clear または spx config @key --clear を実行します。If you need to remove either of these stored values, run spx config @region --clear or spx config @key --clear.

マイクからの音声テキスト変換Speech-to-text from microphone

PC マイクを電源に接続してオンにして、マイクを使用する可能性のあるすべてのアプリをオフにします。Plug in and turn on your PC microphone, and turn off any apps that might also use the microphone. コンピューターによっては、マイクが内蔵されているものや、Bluetooth デバイスの構成が必要なものもあります。Some computers have a built-in microphone, while others require configuration of a Bluetooth device.

Speech CLI を実行して、マイクからの音声を認識する準備ができました。Now you're ready to run the Speech CLI to recognize speech from your microphone. コマンド ラインから、Speech CLI バイナリ ファイルが含まれるディレクトリに変更して、次のコマンドを実行します。From the command line, change to the directory that contains the Speech CLI binary file, and run the following command.

spx recognize --microphone

注意

Speech CLI の既定値は英語です。The Speech CLI defaults to English. 「音声テキスト変換」表から別の言語を選択できます。You can choose a different language from the Speech-to-text table. たとえば、ドイツ語の音声を認識するには、--source de-DE を追加します。For example, add --source de-DE to recognize German speech.

マイクに向かって話すと、自分が発した言葉がテキストに文字起こしされ、リアルタイムで表示されます。Speak into the microphone, and you see transcription of your words into text in real-time. Speech CLI は、無音の状態が一定の時間続いた後、または Ctrl + C キーを押したときに停止します。The Speech CLI will stop after a period of silence, or when you press ctrl-C.

オーディオ ファイルからの音声テキスト変換Speech-to-text from audio file

Speech CLI では、多くのファイル形式と自然言語で音声認識を行うことができます。The Speech CLI can recognize speech in many file formats and natural languages. この例では、英語の音声が含まれる WAV ファイル (16 kHz、8 kHz、16 ビット、mono PCM) を使用できます。In this example, you can use any WAV file (16kHz or 8kHz, 16-bit, and mono PCM) that contains English speech. または、クイック サンプルが必要な場合、whatstheweatherlike.wav ファイルをダウンロードし、それを Speech CLI バイナリ ファイルと同じディレクトリにコピーします。Or if you want a quick sample, download the whatstheweatherlike.wav file and copy it to the same directory as the Speech CLI binary file.

これで Speech CLI を実行する準備ができました。次のコマンドを実行すると、音声ファイルで検出された音声が認識されます。Now you're ready to run the Speech CLI to recognize speech found in the audio file by running the following command.

spx recognize --file whatstheweatherlike.wav

注意

Speech CLI の既定値は英語です。The Speech CLI defaults to English. 「音声テキスト変換」表から別の言語を選択できます。You can choose a different language from the Speech-to-text table. たとえば、ドイツ語の音声を認識するには、--source de-DE を追加します。For example, add --source de-DE to recognize German speech.

Speech CLI では、音声がテキストに文字起こしされて、画面に表示されます。The Speech CLI will show a text transcription of the speech on the screen.

次のステップNext steps