次の方法で共有


Azure AI 音声でファスト トランスクリプション API を使用する

ファスト トランスクリプション API を使用すると、オーディオ ファイルが文字起こしされ、その結果が同期して返されます。これは、リアルタイムよりも高速です。 ファスト トランスクリプションは、オーディオ録音の文字起こしを予測可能な待機時間でできるだけ早く必要とする次のようなシナリオで使用されます。

  • オーディオまたはビデオの文字起こし、字幕、編集を迅速に行う場合。
  • ビデオの翻訳

Batch 文字起こし API とは異なり、ファスト トランスクリプション API では、表示 (語彙ではなく) フォームでのみ文字起こしが生成されます。 表示フォームの方が、句読点や大文字化を含む文字起こしのより読みやすい形式です。

前提条件

  • ファスト トランスクリプション API を使用できるリージョンの 1 つにある Azure AI 音声リソース。 サポートされるリージョンは、オーストラリア東部ブラジル南部インド中部米国東部米国東部 2フランス中部東日本米国中北部北ヨーロッパ米国中南部東南アジアスウェーデン中部西ヨーロッパ米国西部米国西部 2米国西部 3 です。 その他の音声サービス機能でサポートされるリージョンの詳細については、「音声サービスのリージョン」を参照してください。

  • バッチ文字起こし API でサポートされている形式とコーデックのいずれかのオーディオ ファイル (長さが 2 時間未満、サイズが 200 MB 未満)。 サポートされているオーディオ形式の詳細については、サポートされているオーディオ形式のセクションを参照してください。

ファスト トランスクリプション API を使用する

ヒント

Azure AI Studio でファスト トランスクリプションを試してみてください。

次のシナリオでファスト トランスクリプション API (文字起こし - 文字起こしを経由) を使用する方法について説明します。

  • 指定された既知のロケール: 指定されたロケールでオーディオ ファイルを文字起こしします。 オーディオ ファイルのロケールがわかっている場合は、それを指定して文字起こしの精度を向上させ、待機時間を最小限に抑えることができます。
  • 言語識別がオン: 言語識別をオンにしてオーディオ ファイルを文字起こしします。 オーディオ ファイルのロケールがわからない場合は、言語識別をオンにして、音声サービスでロケールを識別できるようにします。
  • ダイアライゼーションがオン: ダイアライゼーションをオンにしてオーディオ ファイルを文字起こしします。 ダイアライゼーションは、会話内で異なる話者を区別します。 音声サービスは、文字起こしされた音声の特定の部分を話していた話者に関する情報を提供します。
  • マルチチャネルがオン: 1 つまたは 2 つのチャネルを持つオーディオ ファイルを文字起こしします。 マルチチャネル文字起こしは、複数の話者がいるオーディオ ファイルやバックグラウンド ノイズがあるオーディオ ファイルなど、複数のチャネルを持つオーディオ ファイルに役立ちます。 既定では、ファスト トランスクリプション API は、すべての入力チャネルを 1 つのチャネルにマージしてから、文字起こしを実行します。 これが望ましくない場合は、マージせずにチャネルを個別に文字起こしできます。

オーディオ ファイルと要求本文のプロパティを使用して、transcriptions エンドポイントに対して multipart/form-data POST 要求を行います。

次の例は、指定されたロケールでオーディオ ファイルを文字起こしする方法を示しています。 オーディオ ファイルのロケールがわかっている場合は、それを指定して文字起こしの精度を向上させ、待機時間を最小限に抑えることができます。

  • YourSubscriptionKey をSpeech リソース キーに置き換えます。
  • YourServiceRegion を Azure Cognitive Service for Speech リソースのリージョンに置き換えます。
  • YourAudioFile を、オーディオ ファイルへのパスに置き換えます。
curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: YourSubscriptionKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

次の手順に従ってフォームの定義を作成します。

  • 文字起こしするオーディオ データの想定されるロケールと一致する必要がある省略可能な (ただし推奨される) locales プロパティを設定します。 この例では、ロケールは en-US に設定されています。 サポートされている指定可能なロケールは de-DE、en-IN、en-US、es-ES、es-MX、fr-FR、hi-IN、it-IT、ja-JP、ko-KR、pt-BR、zh-CN です。

ファスト トランスクリプション API の locales およびその他のプロパティの詳細については、このガイドの後半にある「要求の構成オプション」セクションを参照してください。

応答には durationMillisecondsoffsetMilliseconds などが含まれています。 combinedPhrases プロパティには、すべての話者の完全な文字起こしが含まれています。

{
	"durationMilliseconds": 182439,
	"combinedPhrases": [
		{
			"text": "Good afternoon. This is Sam. Thank you for calling Contoso. How can I help? Hi there. My name is Mary. I'm currently living in Los Angeles, but I'm planning to move to Las Vegas. I would like to apply for a loan. Okay. I see you're currently living in California. Let me make sure I understand you correctly. Uh You'd like to apply for a loan even though you'll be moving soon. Is that right? Yes, exactly. So I'm planning to relocate soon, but I would like to apply for the loan first so that I can purchase a new home once I move there. And are you planning to sell your current home? Yes, I will be listing it on the market soon and hopefully it'll sell quickly. That's why I'm applying for a loan now, so that I can purchase a new house in Nevada and close on it quickly as well once my current home sells. I see. Would you mind holding for a moment while I take your information down? Yeah, no problem. Thank you for your help. Mm-hmm. Just one moment. All right. Thank you for your patience, ma'am. May I have your first and last name, please? Yes, my name is Mary Smith. Thank you, Ms. Smith. May I have your current address, please? Yes. So my address is 123 Main Street in Los Angeles, California, and the zip code is 90923. Sorry, that was a 90 what? 90923. 90923 on Main Street. Got it. Thank you. May I have your phone number as well, please? Uh Yes, my phone number is 504-529-2351 and then yeah. 2351. Got it. And do you have an e-mail address we I can associate with this application? uh Yes, so my e-mail address is mary.a.sm78@gmail.com. Mary.a, was that a S-N as in November or M as in Mike? M as in Mike. Mike78, got it. Thank you. Ms. Smith, do you currently have any other loans? Uh Yes, so I currently have two other loans through Contoso. So my first one is my car loan and then my other is my student loan. They total about 1400 per month combined and my interest rate is 8%. I see. And you're currently paying those loans off monthly, is that right? Yes, of course I do. OK, thank you. Here's what I suggest we do. Let me place you on a brief hold again so that I can talk with one of our loan officers and get this started for you immediately. In the meantime, it would be great if you could take a few minutes and complete the remainder of the secure application online at www.contosoloans.com. Yeah, that sounds good. I can go ahead and get started. Thank you for your help. Thank you."
		}
	],
	"phrases": [
		{
			"offsetMilliseconds": 960,
			"durationMilliseconds": 640,
			"text": "Good afternoon.",
			"words": [
				{
					"text": "Good",
					"offsetMilliseconds": 960,
					"durationMilliseconds": 240
				},
				{
					"text": "afternoon.",
					"offsetMilliseconds": 1200,
					"durationMilliseconds": 400
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 1600,
			"durationMilliseconds": 640,
			"text": "This is Sam.",
			"words": [
				{
					"text": "This",
					"offsetMilliseconds": 1600,
					"durationMilliseconds": 240
				},
				{
					"text": "is",
					"offsetMilliseconds": 1840,
					"durationMilliseconds": 120
				},
				{
					"text": "Sam.",
					"offsetMilliseconds": 1960,
					"durationMilliseconds": 280
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 2240,
			"durationMilliseconds": 1040,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 2240,
					"durationMilliseconds": 200
				},
				{
					"text": "you",
					"offsetMilliseconds": 2440,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 2520,
					"durationMilliseconds": 120
				},
				{
					"text": "calling",
					"offsetMilliseconds": 2640,
					"durationMilliseconds": 200
				},
				{
					"text": "Contoso.",
					"offsetMilliseconds": 2840,
					"durationMilliseconds": 440
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 3280,
			"durationMilliseconds": 640,
			"text": "How can I help?",
			"words": [
				{
					"text": "How",
					"offsetMilliseconds": 3280,
					"durationMilliseconds": 120
				},
				{
					"text": "can",
					"offsetMilliseconds": 3440,
					"durationMilliseconds": 120
				},
				{
					"text": "I",
					"offsetMilliseconds": 3560,
					"durationMilliseconds": 40
				},
				{
					"text": "help?",
					"offsetMilliseconds": 3600,
					"durationMilliseconds": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 5040,
			"durationMilliseconds": 400,
			"text": "Hi there.",
			"words": [
				{
					"text": "Hi",
					"offsetMilliseconds": 5040,
					"durationMilliseconds": 240
				},
				{
					"text": "there.",
					"offsetMilliseconds": 5280,
					"durationMilliseconds": 160
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 5440,
			"durationMilliseconds": 800,
			"text": "My name is Mary.",
			"words": [
				{
					"text": "My",
					"offsetMilliseconds": 5440,
					"durationMilliseconds": 80
				},
				{
					"text": "name",
					"offsetMilliseconds": 5520,
					"durationMilliseconds": 120
				},
				{
					"text": "is",
					"offsetMilliseconds": 5640,
					"durationMilliseconds": 80
				},
				{
					"text": "Mary.",
					"offsetMilliseconds": 5720,
					"durationMilliseconds": 520
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		// More transcription results...
	    // Redacted for brevity
		{
			"offsetMilliseconds": 180320,
			"durationMilliseconds": 680,
			"text": "Thank you for your help.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 180320,
					"durationMilliseconds": 160
				},
				{
					"text": "you",
					"offsetMilliseconds": 180480,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 180560,
					"durationMilliseconds": 120
				},
				{
					"text": "your",
					"offsetMilliseconds": 180680,
					"durationMilliseconds": 120
				},
				{
					"text": "help.",
					"offsetMilliseconds": 180800,
					"durationMilliseconds": 200
				}
			],
			"locale": "en-US",
			"confidence": 0.9314801
		},
		{
			"offsetMilliseconds": 181960,
			"durationMilliseconds": 280,
			"text": "Thank you.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 181960,
					"durationMilliseconds": 200
				},
				{
					"text": "you.",
					"offsetMilliseconds": 182160,
					"durationMilliseconds": 80
				}
			],
			"locale": "en-US",
			"confidence": 0.9314801
		}
	]
}

要求の構成オプション

文字起こし - 文字起こし操作を呼び出すときに文字起こしを構成するためのいくつかのプロパティ オプションを次に示します。

プロパティ 説明 必須または省略可能
channels 個別に文字起こしするチャネルの 0 から始まるインデックスのリスト。 ダイアライゼーションが有効になっていない限り、最大 2 つのチャネルがサポートされます。 既定では、ファスト トランスクリプション API は、すべての入力チャネルを 1 つのチャネルにマージしてから、文字起こしを実行します。 これが望ましくない場合は、マージせずにチャネルを個別に文字起こしできます。

ステレオ オーディオ ファイルのチャネルを個別に文字起こしする場合は、[0,1][0]、または [1] を指定する必要があります。 そうしないと、ステレオ オーディオはモノラルにマージされ、1 つのチャネルのみが文字起こしされます。

オーディオがステレオで、ダイアライゼーションが有効になっている場合、channels プロパティを [0,1] に設定することはできません。 音声サービスでは、複数のチャネルのダイアライゼーションはサポートされていません。

モノラル オーディオの場合、channels プロパティは無視され、オーディオは常に 1 つのチャネルとして文字起こしされます。
省略可能
diarization ダイアライゼーション構成。 ダイアライゼーションとは、1 つのオーディオ チャネルで複数の話者を認識し、分離するプロセスです。 たとえば、"diarization": {"maxSpeakers": 2, "enabled": true} と指定します。 文字起こしファイルには、文字起こしされたフレーズごとに speaker エントリ ("speaker": 0 または "speaker": 1 など) が含まれます。 省略可能
locales 文字起こしする音声データの想定されるロケールと一致する必要があるロケールのリスト。

オーディオ ファイルのロケールがわかっている場合は、それを指定して文字起こしの精度を向上させ、待機時間を最小限に抑えることができます。 1 つのロケールが指定されている場合、そのロケールが文字起こしに使用されます。

ただし、ロケールがわからない場合は、複数のロケールを指定できます。 候補ロケールのより正確なリストを使用すると、言語の識別がより正確になる場合があります。

ロケールを指定しない場合、または指定したロケールがオーディオ ファイルにない場合、音声サービスは引き続き言語の識別を試みます。 言語を識別できない場合は、エラーが返されます。

サポートされている指定可能なロケールは de-DE、en-IN、en-US、es-ES、es-MX、fr-FR、hi-IN、it-IT、ja-JP、ko-KR、pt-BR、zh-CN です。 文字起こし - サポートされているロケールの一覧 REST API から、サポートされている最新の言語を取得できます。 ロケールの詳細については、音声サービスの言語サポートに関するドキュメントを参照してください。
省略可能。ただし、想定されるロケールがわかっている場合は推奨。
profanityFilterMode 認識結果内の不適切な表現をどう扱うかを指定します。 指定できる値は、None (不適切な表現のフィルターを無効にする)、Masked (不適切な表現をアスタリスクに置き換える)、Removed (すべての不適切な表現を結果から除去する)、または Tags (不適切な表現のタグを追加する) です。 既定値は Masked です。 省略可能