OpenAI platform : ガイド : 音声テキスト変換 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/05/2023
* 本ページは、以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
OpenAI platform : ガイド : 音声テキスト変換
音声をテキストに変換する方法を学習します。
イントロダクション
音声テキスト変換 API は、私たちの最先端のオープンソース large-v2 Whisper モデル に基づいて 2 つのエンドポイント、トランスクリプション (文字起こし) と翻訳を提供します。それらは以下のために利用できます :
- 音声を音声がどのような言語でも文字起こしします。
- 音声を英語に翻訳して文字起こしします。
現在、ファイルのアップロードは 25 MB に制限されていて、以下の入力ファイルタイプがサポートされています : mp3, mp4, mpeg, mpga, m4a, wav, and webm.
クイックスタート
トランスクリプション
トランスクリプション API は入力として、文字起こししたい音声ファイルと音声の文字起こし用の希望の出力ファイル形式を受け取ります。現在複数の入力と出力ファイル形式をサポートしています。
python
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
curl
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: multipart/form-data' \
--form file=@/path/to/file/openai.mp3 \
--form model=whisper-1
デフォルトでは、レスポンスタイプは raw テキストを含む json です。
{ "text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger. .... }
リクエストで追加パラメータを設定するには、関連オプションで更に –form 行を追加することができます。例えば、出力形式をテキストとして設定したい場合、以下の行を追加します :
...
--form file=@openai.mp3 \
--form model=whisper-1 \
--form response_format=text
翻訳
翻訳 API は入力としてサポートされる任意の言語の音声ファイルを受け取り、そして必要に応じて音声を英語に文字起こしします。これは /Transcriptions エンドポイントとは異なります、出力は元の入力言語ではないからです、そして代わりに英語テキストに翻訳されます。
python
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/german.mp3", "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)
curl
curl --request POST --url https://api.openai.com/v1/audio/translations --header 'Authorization: Bearer TOKEN' --header 'Content-Type: multipart/form-data' --form file=@/path/to/file/german.mp3 --form model=whisper-1
この場合、入力された音声はドイツ語で出力されるテキストはこのようなものです :
Hello, my name is Wolfgang and I come from Germany. Where are you heading today?
現時点では英語への翻訳だけをサポートしています。
サポートされる言語
現在、トランスクリプションと翻訳の両方のエンドポイント経由で以下の言語をサポートしています :
Afrikaans, Arabic, Armenian, Azerbaijani, Belarusian, Bosnian, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Kannada, Kazakh, Korean, Latvian, Lithuanian, Macedonian, Malay, Marathi, Maori, Nepali, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and Welsh.
基礎的なモデルは 98 言語上で訓練されましたが、音声テキスト変換モデル精度用の業界 (industry) 標準ベンチマークである、<50% 単語エラー率 (WER) を超える言語だけを列挙しています。モデルは上記にリストアップされていない言語に対しても結果を返しますが、品質は低くなります。
より長い入力
デフォルトでは、Whisper API は 25 MB 未満のファイルだけをサポートします。それよりも長い音声ファイルを持つ場合には、それを 25 MB またはそれ未満のチャンクに分解するか、圧縮音声形式を使用する必要があります。最良のパフォーマンスを得るには、センテンスの途中で音声を分割することを回避することを勧めます、これは何某かのコンテキストが失われる可能性があります。
これに対処する一つの方法は音声を分割するために PyDub オープンソース Python パッケージ を使用することです :
from pydub import AudioSegment
song = AudioSegment.from_mp3("good_morning.mp3")
# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.mp3", format="mp3")
OpenAI makes no guarantees about the usability or security of 3rd party software like PyDub.
プロンプティング
Whisper API により生成される文字起こしの品質を向上させるためにプロンプトを使用することができます。モデルはプロンプトのスタイルに適合しようとしますので、プロンプトがそうであれば、大文字や句読点を使用する傾向が強くなります。ただし、現在のプロンプティングシステムは他の言語モデルよりも遥かに制限され、生成される音声に対して制限された制御だけを提供します。ここにプロンプティングが様々なシナリオでどのように役立てるかの幾つかの例があります :
- プロンプトは、モデルが音声でご認識しやすい特定の単語や頭文字を正すのに非常に役立ちます。例えば、次のプロンプトは、以前は “GDP 3” と “DALI” として書かれていた、単語 DALL·E と GPT-3 の文字起こしを改善します : “The transcript is about OpenAI which makes technology like DALL·E, GPT-3, and ChatGPT with the hope of one day building an AGI system that benefits all of humanity”
- セグメントに分割されたファイルのコンテキストを保持するため、前のセグメントの文字起こしを使用してモデルにプロンプトを与えることができます。モデルは前の音声からの関連情報を使用しますので、これは文字起こしをより正確にします。モデルはプロンプトの最後の 224 トークンだけを考慮し、それより前のものは無視します。多言語入力については、Whisper はカスタムトークナイザーを使用します。英語だけの入力については、標準的な GPT-2 トークナイザーを使用します、これらは両方ともオープンソース Whisper Python パッケージ を通してアクセス可能です。
- モデルは文字起こしで句読点をスキップする場合があるかもしれません。句読点を含む単純なプロンプト: “Hello, welcome to my lecture.” を使用してこれを回避することができます。
- モデルは音声内の一般的なつなぎ言葉 (filler words) を除外するかもしれません。文字起こしでつなぎ言葉を保持したい場合には、それらを含むプロンプト: “Umm, let me think like, hmm… Okay, here’s what I’m, like, thinking.” を使用できます。
- 幾つかの言語は、簡体字と繁体字の中国語のように、異なる方法で書くことができます。モデルはデフォルトで貴方が文字起こしに望む文体を常に使用するとは限りません。希望の文体でプロンプトを使用することによりこれを改善できます。
以上