クイック スタート: リアルタイムのダイアライゼーション (プレビュー)
リファレンス ドキュメントパッケージ (NuGet)GitHub のその他のサンプル
このクイックスタートでは、リアルタイムのダイアライゼーションを使用した音声テキスト変換の文字起こし用のアプリケーションを実行します。 ここで、ダイアライゼーションは、会話に参加している異なる話者を区別しています。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
注意
リアルタイムのダイアライゼーションは、現在パブリック プレビュー段階です。
話者情報は、話者 ID フィールドの結果に含まれます。 話者 ID は、提供されたオーディオ コンテンツから異なる話者が識別されているときに、認識中のサービスによって各会話参加者に割り当てられる汎用識別子です。
ヒント
Speech Studio では、サインアップやコードの記述を行わずに、リアルタイムの音声テキスト変換を試すことができます。 ただし、Speech Studio はまだダイアライゼーションをサポートしていません。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure portal で音声リソースを作成します。
- Azure Cognitive Service for Speech リソース キーとリージョン。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Azure AI サービス リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Azure Cognitive Service for Speech SDK は、このガイドで後でインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください。
環境変数の設定
Azure AI サービス リソースにアクセスするには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 たとえば、Speech リソースのキーを取得したら、アプリケーションを実行しているローカル コンピューター上の新しい環境変数に書き込みます。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、「Azure AI サービスのセキュリティ」を参照してください。
Azure Cognitive Service for Speech リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
SPEECH_KEY
環境変数を設定するには、"キー" をリソースのキーの 1 つに置き換えます。SPEECH_REGION
環境変数を設定するには、"リージョン" をリソースのリージョンの 1 つに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Note
現在のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx
の代わりに set
に設定できます。
環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。
会話の文字起こしを使用したファイルからのダイアライゼーション
以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。
新しいプロジェクトを作成するコマンド プロンプトを開き、.NET CLI を使用してコンソール アプリケーションを作成します。
Program.cs
ファイルは、プロジェクト ディレクトリに作成する必要があります。dotnet new console
.NET CLI を使用して、新しいプロジェクトに Speech SDK をインストールします。
dotnet add package Microsoft.CognitiveServices.Speech
Program.cs
の内容を以下のコードに置き換えます。using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; using Microsoft.CognitiveServices.Speech.Transcription; class Program { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY"); static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION"); async static Task Main(string[] args) { var filepath = "katiesteve.wav"; var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); speechConfig.SpeechRecognitionLanguage = "en-US"; var stopRecognition = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously); // Create an audio stream from a wav file or from the default microphone using (var audioConfig = AudioConfig.FromWavFileInput(filepath)) { // Create a conversation transcriber using audio stream input using (var conversationTranscriber = new ConversationTranscriber(speechConfig, audioConfig)) { conversationTranscriber.Transcribing += (s, e) => { Console.WriteLine($"TRANSCRIBING: Text={e.Result.Text}"); }; conversationTranscriber.Transcribed += (s, e) => { if (e.Result.Reason == ResultReason.RecognizedSpeech) { Console.WriteLine($"TRANSCRIBED: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}"); } else if (e.Result.Reason == ResultReason.NoMatch) { Console.WriteLine($"NOMATCH: Speech could not be transcribed."); } }; conversationTranscriber.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 set the speech resource key and region values?"); stopRecognition.TrySetResult(0); } stopRecognition.TrySetResult(0); }; conversationTranscriber.SessionStopped += (s, e) => { Console.WriteLine("\n Session stopped event."); stopRecognition.TrySetResult(0); }; await conversationTranscriber.StartTranscribingAsync(); // Waits for completion. Use Task.WaitAny to keep the task rooted. Task.WaitAny(new[] { stopRecognition.Task }); await conversationTranscriber.StopTranscribingAsync(); } } } }
katiesteve.wav
を.wav
ファイルのファイル パスとファイル名に置き換えます。 このクイックスタートの意図は、会話内の複数の参加者からの音声を認識することです。 オーディオ ファイルには複数の話者が含まれている必要があります。 たとえば、GitHub の Speech SDK サンプル リポジトリに用意されているサンプル オーディオ ファイルを使用できます。注意
このサービスは、1 人の話者からの 7 秒以上の連続音声があると最適なパフォーマンスを発揮します。 これにより、システムは話者を適切に区別できます。 そうでない場合、話者 ID は
Unknown
として返されます。音声認識言語を変更するには、
en-US
を別のen-US
に置き換えます。 たとえば、スペイン語 (スペイン) の場合は、es-ES
を作成します。 言語を指定しない場合、既定の言語はen-US
です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。
新しいコンソール アプリケーションを実行して、会話の文字起こしを開始します。
dotnet run
重要
上記の説明に従って、SPEECH_KEY
環境変数と SPEECH_REGION
環境変数を設定してください。 これらの変数を設定しない場合、サンプルはエラー メッセージが表示されて失敗します。
文字起こしされた会話は、テキストとして出力されます。
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream
話者は、会話内の話者の数に応じて、Guest-1、Guest-2 のように識別されます。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (NuGet)GitHub のその他のサンプル
このクイックスタートでは、リアルタイムのダイアライゼーションを使用した音声テキスト変換の文字起こし用のアプリケーションを実行します。 ここで、ダイアライゼーションは、会話に参加している異なる話者を区別しています。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
注意
リアルタイムのダイアライゼーションは、現在パブリック プレビュー段階です。
話者情報は、話者 ID フィールドの結果に含まれます。 話者 ID は、提供されたオーディオ コンテンツから異なる話者が識別されているときに、認識中のサービスによって各会話参加者に割り当てられる汎用識別子です。
ヒント
Speech Studio では、サインアップやコードの記述を行わずに、リアルタイムの音声テキスト変換を試すことができます。 ただし、Speech Studio はまだダイアライゼーションをサポートしていません。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure portal で音声リソースを作成します。
- Azure Cognitive Service for Speech リソース キーとリージョン。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Azure AI サービス リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Azure Cognitive Service for Speech SDK は、このガイドで後でインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください。
環境変数の設定
Azure AI サービス リソースにアクセスするには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 たとえば、Speech リソースのキーを取得したら、アプリケーションを実行しているローカル コンピューター上の新しい環境変数に書き込みます。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、「Azure AI サービスのセキュリティ」を参照してください。
Azure Cognitive Service for Speech リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
SPEECH_KEY
環境変数を設定するには、"キー" をリソースのキーの 1 つに置き換えます。SPEECH_REGION
環境変数を設定するには、"リージョン" をリソースのリージョンの 1 つに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Note
現在のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx
の代わりに set
に設定できます。
環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。
会話の文字起こしを使用したファイルからのダイアライゼーション
以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。
Visual Studio Community 2022 で、
ConversationTranscription
という新しい C++ コンソール プロジェクトを作成します。NuGet パッケージ マネージャーを使用して、新しいプロジェクトに Speech SDK をインストールします。
Install-Package Microsoft.CognitiveServices.Speech
ConversationTranscription.cpp
の内容を次のコードに置き換えます。#include <iostream> #include <stdlib.h> #include <speechapi_cxx.h> #include <future> using namespace Microsoft::CognitiveServices::Speech; using namespace Microsoft::CognitiveServices::Speech::Audio; using namespace Microsoft::CognitiveServices::Speech::Transcription; std::string GetEnvironmentVariable(const char* name); int main() { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" auto speechKey = GetEnvironmentVariable("SPEECH_KEY"); auto speechRegion = GetEnvironmentVariable("SPEECH_REGION"); if ((size(speechKey) == 0) || (size(speechRegion) == 0)) { std::cout << "Please set both SPEECH_KEY and SPEECH_REGION environment variables." << std::endl; return -1; } auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion); speechConfig->SetSpeechRecognitionLanguage("en-US"); auto audioConfig = AudioConfig::FromWavFileInput("katiesteve.wav"); auto conversationTranscriber = ConversationTranscriber::FromConfig(speechConfig, audioConfig); // promise for synchronization of recognition end. std::promise<void> recognitionEnd; // Subscribes to events. conversationTranscriber->Transcribing.Connect([](const ConversationTranscriptionEventArgs& e) { std::cout << "TRANSCRIBING:" << e.Result->Text << std::endl; }); conversationTranscriber->Transcribed.Connect([](const ConversationTranscriptionEventArgs& e) { if (e.Result->Reason == ResultReason::RecognizedSpeech) { std::cout << "TRANSCRIBED: Text=" << e.Result->Text << std::endl; std::cout << "Speaker ID=" << e.Result->SpeakerId << std::endl; } else if (e.Result->Reason == ResultReason::NoMatch) { std::cout << "NOMATCH: Speech could not be transcribed." << std::endl; } }); conversationTranscriber->Canceled.Connect([&recognitionEnd](const ConversationTranscriptionCanceledEventArgs& e) { auto cancellation = CancellationDetails::FromResult(e.Result); std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl; if (cancellation->Reason == CancellationReason::Error) { std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl; std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl; std::cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl; } else if (cancellation->Reason == CancellationReason::EndOfStream) { std::cout << "CANCELED: Reach the end of the file." << std::endl; } }); conversationTranscriber->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e) { std::cout << "Session stopped."; recognitionEnd.set_value(); // Notify to stop recognition. }); conversationTranscriber->StartTranscribingAsync().wait(); // Waits for recognition end. recognitionEnd.get_future().wait(); conversationTranscriber->StopTranscribingAsync().wait(); } 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 }
katiesteve.wav
を.wav
ファイルのファイル パスとファイル名に置き換えます。 このクイックスタートの意図は、会話内の複数の参加者からの音声を認識することです。 オーディオ ファイルには複数の話者が含まれている必要があります。 たとえば、GitHub の Speech SDK サンプル リポジトリに用意されているサンプル オーディオ ファイルを使用できます。注意
このサービスは、1 人の話者からの 7 秒以上の連続音声があると最適なパフォーマンスを発揮します。 これにより、システムは話者を適切に区別できます。 そうでない場合、話者 ID は
Unknown
として返されます。音声認識言語を変更するには、
en-US
を別のen-US
に置き換えます。 たとえば、スペイン語 (スペイン) の場合は、es-ES
を作成します。 言語を指定しない場合、既定の言語はen-US
です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。
アプリケーションをビルドして実行し、会話の文字起こしを開始します。
重要
上記の説明に従って、SPEECH_KEY
環境変数と SPEECH_REGION
環境変数を設定してください。 これらの変数を設定しない場合、サンプルはエラー メッセージが表示されて失敗します。
文字起こしされた会話は、テキストとして出力されます。
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream
話者は、会話内の話者の数に応じて、Guest-1、Guest-2 のように識別されます。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (Go)GitHub のその他のサンプル
Go 用の Speech SDK では、会話の文字起こしはサポートされていません。 別のプログラミング言語を選択するか、この記事の冒頭でリンクされている、Go のリファレンスとサンプルを使用してください。
リファレンス ドキュメント | GitHub のその他のサンプル
このクイックスタートでは、リアルタイムのダイアライゼーションを使用した音声テキスト変換の文字起こし用のアプリケーションを実行します。 ここで、ダイアライゼーションは、会話に参加している異なる話者を区別しています。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
注意
リアルタイムのダイアライゼーションは、現在パブリック プレビュー段階です。
話者情報は、話者 ID フィールドの結果に含まれます。 話者 ID は、提供されたオーディオ コンテンツから異なる話者が識別されているときに、認識中のサービスによって各会話参加者に割り当てられる汎用識別子です。
ヒント
Speech Studio では、サインアップやコードの記述を行わずに、リアルタイムの音声テキスト変換を試すことができます。 ただし、Speech Studio はまだダイアライゼーションをサポートしていません。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure portal で音声リソースを作成します。
- Azure Cognitive Service for Speech リソース キーとリージョン。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Azure AI サービス リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
何らかの操作を行うには、事前に Speech SDK をインストールしておく必要があります。 このクイックスタートのサンプルは、Java ランタイムで動作します。
- Apache Maven をインストールします。 次に
mvn -v
を実行して、インストールが成功したことを確認します。 - プロジェクトのルートに新しい
pom.xml
ファイルを作成し、その中に以下をコピーします。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk</artifactId> <version>1.33.0</version> </dependency> </dependencies> </project>
- Speech SDK と依存関係をインストールします。
mvn clean dependency:copy-dependencies
環境変数の設定
Azure AI サービス リソースにアクセスするには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 たとえば、Speech リソースのキーを取得したら、アプリケーションを実行しているローカル コンピューター上の新しい環境変数に書き込みます。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、「Azure AI サービスのセキュリティ」を参照してください。
Azure Cognitive Service for Speech リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
SPEECH_KEY
環境変数を設定するには、"キー" をリソースのキーの 1 つに置き換えます。SPEECH_REGION
環境変数を設定するには、"リージョン" をリソースのリージョンの 1 つに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Note
現在のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx
の代わりに set
に設定できます。
環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。
会話の文字起こしを使用したファイルからのダイアライゼーション
以下の手順に従って、会話の文字起こしのための新しいコンソール アプリケーションを作成します。
同じプロジェクト ルート ディレクトリに
ConversationTranscription.java
という新しいファイルを作成します。ConversationTranscription.java
に以下のコードをコピーします。import com.microsoft.cognitiveservices.speech.*; import com.microsoft.cognitiveservices.speech.audio.AudioConfig; import com.microsoft.cognitiveservices.speech.transcription.*; import java.util.concurrent.Semaphore; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; public class ConversationTranscription { // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" private static String speechKey = System.getenv("SPEECH_KEY"); private static String speechRegion = System.getenv("SPEECH_REGION"); public static void main(String[] args) throws InterruptedException, ExecutionException { SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion); speechConfig.setSpeechRecognitionLanguage("en-US"); AudioConfig audioInput = AudioConfig.fromWavFileInput("katiesteve.wav"); Semaphore stopRecognitionSemaphore = new Semaphore(0); ConversationTranscriber conversationTranscriber = new ConversationTranscriber(speechConfig, audioInput); { // Subscribes to events. conversationTranscriber.transcribing.addEventListener((s, e) -> { System.out.println("TRANSCRIBING: Text=" + e.getResult().getText()); }); conversationTranscriber.transcribed.addEventListener((s, e) -> { if (e.getResult().getReason() == ResultReason.RecognizedSpeech) { System.out.println("TRANSCRIBED: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() ); } else if (e.getResult().getReason() == ResultReason.NoMatch) { System.out.println("NOMATCH: Speech could not be transcribed."); } }); conversationTranscriber.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?"); } stopRecognitionSemaphore.release(); }); conversationTranscriber.sessionStarted.addEventListener((s, e) -> { System.out.println("\n Session started event."); }); conversationTranscriber.sessionStopped.addEventListener((s, e) -> { System.out.println("\n Session stopped event."); }); conversationTranscriber.startTranscribingAsync().get(); // Waits for completion. stopRecognitionSemaphore.acquire(); conversationTranscriber.stopTranscribingAsync().get(); } speechConfig.close(); audioInput.close(); conversationTranscriber.close(); System.exit(0); } }
katiesteve.wav
を.wav
ファイルのファイル パスとファイル名に置き換えます。 このクイックスタートの意図は、会話内の複数の参加者からの音声を認識することです。 オーディオ ファイルには複数の話者が含まれている必要があります。 たとえば、GitHub の Speech SDK サンプル リポジトリに用意されているサンプル オーディオ ファイルを使用できます。注意
このサービスは、1 人の話者からの 7 秒以上の連続音声があると最適なパフォーマンスを発揮します。 これにより、システムは話者を適切に区別できます。 そうでない場合、話者 ID は
Unknown
として返されます。音声認識言語を変更するには、
en-US
を別のen-US
に置き換えます。 たとえば、スペイン語 (スペイン) の場合は、es-ES
を作成します。 言語を指定しない場合、既定の言語はen-US
です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。
新しいコンソール アプリケーションを実行して、会話の文字起こしを開始します。
javac ConversationTranscription.java -cp ".;target\dependency\*"
java -cp ".;target\dependency\*" ConversationTranscription
重要
上記の説明に従って、SPEECH_KEY
環境変数と SPEECH_REGION
環境変数を設定してください。 これらの変数を設定しない場合、サンプルはエラー メッセージが表示されて失敗します。
文字起こしされた会話は、テキストとして出力されます。
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream
話者は、会話内の話者の数に応じて、Guest-1、Guest-2 のように識別されます。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンスドキュメントパッケージ (npm)GitHub のその他のサンプルライブラリのソース コード
このクイックスタートでは、リアルタイムのダイアライゼーションを使用した音声テキスト変換の文字起こし用のアプリケーションを実行します。 ここで、ダイアライゼーションは、会話に参加している異なる話者を区別しています。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
注意
リアルタイムのダイアライゼーションは、現在パブリック プレビュー段階です。
話者情報は、話者 ID フィールドの結果に含まれます。 話者 ID は、提供されたオーディオ コンテンツから異なる話者が識別されているときに、認識中のサービスによって各会話参加者に割り当てられる汎用識別子です。
ヒント
Speech Studio では、サインアップやコードの記述を行わずに、リアルタイムの音声テキスト変換を試すことができます。 ただし、Speech Studio はまだダイアライゼーションをサポートしていません。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure portal で音声リソースを作成します。
- Azure Cognitive Service for Speech リソース キーとリージョン。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Azure AI サービス リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
何らかの操作を行うには、事前に Speech SDK for JavaScript をインストールしておく必要があります。 パッケージ名のインストールだけが必要な場合は、npm install microsoft-cognitiveservices-speech-sdk
を実行します。 詳しいインストール手順については、SDK のインストール ガイドを参照してください。
環境変数の設定
Azure AI サービス リソースにアクセスするには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 たとえば、Speech リソースのキーを取得したら、アプリケーションを実行しているローカル コンピューター上の新しい環境変数に書き込みます。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、「Azure AI サービスのセキュリティ」を参照してください。
Azure Cognitive Service for Speech リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
SPEECH_KEY
環境変数を設定するには、"キー" をリソースのキーの 1 つに置き換えます。SPEECH_REGION
環境変数を設定するには、"リージョン" をリソースのリージョンの 1 つに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Note
現在のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx
の代わりに set
に設定できます。
環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。
会話の文字起こしを使用したファイルからのダイアライゼーション
以下の手順に従って、会話の文字起こしのための新しいコンソール アプリケーションを作成します。
新しいプロジェクトを作成するコマンド プロンプトを開き、
ConversationTranscription.js
という名前の新しいファイルを作成します。Speech SDK for JavaScript をインストールします。
npm install microsoft-cognitiveservices-speech-sdk
ConversationTranscription.js
に以下のコードをコピーします。const fs = require("fs"); const sdk = require("microsoft-cognitiveservices-speech-sdk"); // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION); function fromFile() { const filename = "katiesteve.wav"; let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync(filename)); let conversationTranscriber = new sdk.ConversationTranscriber(speechConfig, audioConfig); var pushStream = sdk.AudioInputStream.createPushStream(); fs.createReadStream(filename).on('data', function(arrayBuffer) { pushStream.write(arrayBuffer.slice()); }).on('end', function() { pushStream.close(); }); console.log("Transcribing from: " + filename); conversationTranscriber.sessionStarted = function(s, e) { console.log("SessionStarted event"); console.log("SessionId:" + e.sessionId); }; conversationTranscriber.sessionStopped = function(s, e) { console.log("SessionStopped event"); console.log("SessionId:" + e.sessionId); conversationTranscriber.stopTranscribingAsync(); }; conversationTranscriber.canceled = function(s, e) { console.log("Canceled event"); console.log(e.errorDetails); conversationTranscriber.stopTranscribingAsync(); }; conversationTranscriber.transcribed = function(s, e) { console.log("TRANSCRIBED: Text=" + e.result.text + " Speaker ID=" + e.result.speakerId); }; // Start conversation transcription conversationTranscriber.startTranscribingAsync( function () {}, function (err) { console.trace("err - starting transcription: " + err); } ); } fromFile();
katiesteve.wav
を.wav
ファイルのファイル パスとファイル名に置き換えます。 このクイックスタートの意図は、会話内の複数の参加者からの音声を認識することです。 オーディオ ファイルには複数の話者が含まれている必要があります。 たとえば、GitHub の Speech SDK サンプル リポジトリに用意されているサンプル オーディオ ファイルを使用できます。注意
このサービスは、1 人の話者からの 7 秒以上の連続音声があると最適なパフォーマンスを発揮します。 これにより、システムは話者を適切に区別できます。 そうでない場合、話者 ID は
Unknown
として返されます。音声認識言語を変更するには、
en-US
を別のen-US
に置き換えます。 たとえば、スペイン語 (スペイン) の場合は、es-ES
を作成します。 言語を指定しない場合、既定の言語はen-US
です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。
新しいコンソール アプリケーションを実行して、ファイルからの音声認識を開始します。
node.exe ConversationTranscription.js
重要
上記の説明に従って、SPEECH_KEY
環境変数と SPEECH_REGION
環境変数を設定してください。 これらの変数を設定しない場合、サンプルはエラー メッセージが表示されて失敗します。
文字起こしされた会話は、テキストとして出力されます。
SessionStarted event
SessionId:E87AFBA483C2481985F6C9AF719F616B
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning, Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSCRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=Guest-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2
Canceled event
undefined
SessionStopped event
SessionId:E87AFBA483C2481985F6C9AF719F616B
話者は、会話内の話者の数に応じて、Guest-1、Guest-2 のように識別されます。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (ダウンロード)GitHub のその他のサンプル
Objective-C 用の Speech SDK では、会話の文字起こしがサポートされていますが、そのガイドはまだ、ここには含まれていません。 作業を開始するには別のプログラミング言語を選択して概念について学ぶか、この記事の冒頭でリンクされている Objective-C のリファレンスとサンプルを参照してください。
リファレンス ドキュメントパッケージ (ダウンロード)GitHub のその他のサンプル
Swift 用の Speech SDK では、会話の文字起こしがサポートされていますが、そのガイドはまだ、ここには含まれていません。 作業を開始するには、別のプログラミング言語を選択して概念について学ぶか、この記事の冒頭でリンクされている、Swift のリファレンスとサンプルを参照してください。
リファレンス ドキュメントパッケージ (PyPi)GitHub のその他のサンプル
このクイックスタートでは、リアルタイムのダイアライゼーションを使用した音声テキスト変換の文字起こし用のアプリケーションを実行します。 ここで、ダイアライゼーションは、会話に参加している異なる話者を区別しています。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
注意
リアルタイムのダイアライゼーションは、現在パブリック プレビュー段階です。
話者情報は、話者 ID フィールドの結果に含まれます。 話者 ID は、提供されたオーディオ コンテンツから異なる話者が識別されているときに、認識中のサービスによって各会話参加者に割り当てられる汎用識別子です。
ヒント
Speech Studio では、サインアップやコードの記述を行わずに、リアルタイムの音声テキスト変換を試すことができます。 ただし、Speech Studio はまだダイアライゼーションをサポートしていません。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します。
- Azure portal で音声リソースを作成します。
- Azure Cognitive Service for Speech リソース キーとリージョン。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Azure AI サービス リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK Python は、Python パッケージ インデックス (PyPI) モジュールとして入手できます。 Speech SDK for Python は、Windows、Linux、macOS との互換性があります。
- お使いのプラットフォームに対応した Microsoft Visual Studio の Visual C++ 再頒布可能パッケージ 2015、2017、2019、そして2022をインストールする必要があります。 このパッケージを初めてインストールする場合、再起動が必要になる可能性があります。
- Linux では、x64 ターゲット アーキテクチャを使う必要があります。
Python の 3.7 以降のバージョンをインストールします。 最初に、これ以上要件がないか、SDK のインストール ガイドを確認してください。
環境変数の設定
Azure AI サービス リソースにアクセスするには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 たとえば、Speech リソースのキーを取得したら、アプリケーションを実行しているローカル コンピューター上の新しい環境変数に書き込みます。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、「Azure AI サービスのセキュリティ」を参照してください。
Azure Cognitive Service for Speech リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
SPEECH_KEY
環境変数を設定するには、"キー" をリソースのキーの 1 つに置き換えます。SPEECH_REGION
環境変数を設定するには、"リージョン" をリソースのリージョンの 1 つに置き換えます。
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Note
現在のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx
の代わりに set
に設定できます。
環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。
会話の文字起こしを使用したファイルからのダイアライゼーション
次の手順を実行して、新しいコンソール アプリケーションを作成します。
新しいプロジェクトを作成するコマンド プロンプトを開き、
conversation_transcription.py
という名前の新しいファイルを作成します。次のコマンドを実行して、Speech SDK をインストールします。
pip install azure-cognitiveservices-speech
conversation_transcription.py
に以下のコードをコピーします。import os import time import azure.cognitiveservices.speech as speechsdk def conversation_transcriber_recognition_canceled_cb(evt: speechsdk.SessionEventArgs): print('Canceled event') def conversation_transcriber_session_stopped_cb(evt: speechsdk.SessionEventArgs): print('SessionStopped event') def conversation_transcriber_transcribed_cb(evt: speechsdk.SpeechRecognitionEventArgs): print('TRANSCRIBED:') if evt.result.reason == speechsdk.ResultReason.RecognizedSpeech: print('\tText={}'.format(evt.result.text)) print('\tSpeaker ID={}'.format(evt.result.speaker_id)) elif evt.result.reason == speechsdk.ResultReason.NoMatch: print('\tNOMATCH: Speech could not be TRANSCRIBED: {}'.format(evt.result.no_match_details)) def conversation_transcriber_session_started_cb(evt: speechsdk.SessionEventArgs): print('SessionStarted event') def recognize_from_file(): # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION')) speech_config.speech_recognition_language="en-US" audio_config = speechsdk.audio.AudioConfig(filename="katiesteve.wav") conversation_transcriber = speechsdk.transcription.ConversationTranscriber(speech_config=speech_config, audio_config=audio_config) transcribing_stop = False def stop_cb(evt: speechsdk.SessionEventArgs): #"""callback that signals to stop continuous recognition upon receiving an event `evt`""" print('CLOSING on {}'.format(evt)) nonlocal transcribing_stop transcribing_stop = True # Connect callbacks to the events fired by the conversation transcriber conversation_transcriber.transcribed.connect(conversation_transcriber_transcribed_cb) conversation_transcriber.session_started.connect(conversation_transcriber_session_started_cb) conversation_transcriber.session_stopped.connect(conversation_transcriber_session_stopped_cb) conversation_transcriber.canceled.connect(conversation_transcriber_recognition_canceled_cb) # stop transcribing on either session stopped or canceled events conversation_transcriber.session_stopped.connect(stop_cb) conversation_transcriber.canceled.connect(stop_cb) conversation_transcriber.start_transcribing_async() # Waits for completion. while not transcribing_stop: time.sleep(.5) conversation_transcriber.stop_transcribing_async() # Main try: recognize_from_file() except Exception as err: print("Encountered exception. {}".format(err))
katiesteve.wav
を.wav
ファイルのファイル パスとファイル名に置き換えます。 このクイックスタートの意図は、会話内の複数の参加者からの音声を認識することです。 オーディオ ファイルには複数の話者が含まれている必要があります。 たとえば、GitHub の Speech SDK サンプル リポジトリに用意されているサンプル オーディオ ファイルを使用できます。注意
このサービスは、1 人の話者からの 7 秒以上の連続音声があると最適なパフォーマンスを発揮します。 これにより、システムは話者を適切に区別できます。 そうでない場合、話者 ID は
Unknown
として返されます。音声認識言語を変更するには、
en-US
を別のen-US
に置き換えます。 たとえば、スペイン語 (スペイン) の場合は、es-ES
を作成します。 言語を指定しない場合、既定の言語はen-US
です。 話される可能性のある複数の言語の 1 つを識別する方法の詳細については、言語の識別に関するページを参照してください。
新しいコンソール アプリケーションを実行して、会話の文字起こしを開始します。
python conversation_transcription.py
重要
上記の説明に従って、SPEECH_KEY
環境変数と SPEECH_REGION
環境変数を設定してください。 これらの変数を設定しない場合、サンプルはエラー メッセージが表示されて失敗します。
文字起こしされた会話は、テキストとして出力されます。
SessionStarted event
TRANSCRIBED:
Text=Good morning, Steve.
Speaker ID=Unknown
TRANSCRIBED:
Text=Good morning, Katie.
Speaker ID=Unknown
TRANSCRIBED:
Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time?
Speaker ID=Guest-1
TRANSCRIBED:
Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed.
Speaker ID=Guest-2
TRANSCRIBED:
Text=Is the new feature can diarize in real time?
Speaker ID=Guest-2
TRANSCRIBED:
Text=Absolutely.
Speaker ID=Guest-1
TRANSCRIBED:
Text=That's exciting. Let me try it right now.
Speaker ID=Guest-2
Canceled event
CLOSING on ConversationTranscriptionCanceledEventArgs(session_id=92a0abb68636471dac07041b335d9be3, result=ConversationTranscriptionResult(result_id=ad1b1d83b5c742fcacca0692baa8df74, speaker_id=, text=, reason=ResultReason.Canceled))
SessionStopped event
CLOSING on SessionEventArgs(session_id=92a0abb68636471dac07041b335d9be3)
話者は、会話内の話者の数に応じて、Guest-1、Guest-2 のように識別されます。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
Speech to text REST API リファレンス | Speech to text REST API for short audio リファレンス | GitHub のその他のサンプル
REST API では、会話の文字起こしはサポートされていません。 このページの上部で、別のプログラミング言語またはツールを選択してください。
Speech CLI では、会話の文字起こしはサポートされていません。 このページの上部で、別のプログラミング言語またはツールを選択してください。