ailia_speech  1.3.0.0
機能

ailia Speechの機能

本ページでは、CとC#で共通に使用できる機能を解説します。

基本タスク

テキスト化と翻訳

AILIA_SPEECH_TASK_TRANSCRIBEを指定することで、音声のテキスト化が可能です。 AILIA_SPEECH_TASK_TRANSLATEを指定することで、音声のテキスト化と英語への翻訳が可能です。

使用可能なAIモデル

AIモデルとして、Whisperのbase、tiny、small、mediumが使用可能です。後者になるほど、高精度なモデルとなります。実用的な精度を出そうとすると、small以上のモデルを推奨しています。mediumはsmallよりも精度が高くなりますが、処理負荷が大きくなります。

言語指定

デフォルトでは、音声セグメントごとに言語判定が呼び出されます。SetLanguage APIを呼び出した場合、指定した言語で処理を固定します。言語判定は短い音声では間違う可能性もあるため、言語が明確な場合はSetLanguage APIを呼び出してください。

指定可能な言語コードは下記です。

"en", "zh", "de", "es", "ru", "ko", "fr", "ja", "pt", "tr", "pl", "ca", "nl", "ar", "sv", "it", "id", "hi", "fi", "vi", "iw", "uk", "el", "ms", "cs", "ro", "da", "hu", "ta", "no", "th", "ur", "hr", "bg", "lt", "la", "mi", "ml", "cy", "sk", "te", "fa", "lv", "bn", "sr", "az", "sl", "kn", "et", "mk", "br", "eu", "is", "hy", "ne", "mn", "bs", "kk", "sq", "sw", "gl", "mr", "pa", "si", "km", "sn", "yo", "so", "af", "oc", "ka", "be", "tg", "sd", "gu", "am", "yi", "lo", "uz", "fo", "ht", "ps", "tk", "nn", "mt", "sa", "lb", "my", "bo", "tl", "mg", "as", "tt", "haw", "ln", "ha", "ba", "jw", "su"

ライブ変換

ライブ変換を有効にすると、30秒の音声の到着を待たずに、現在のバッファの内容で投機的に推論を行い、プレビューを行うことが可能です。 通常の音声認識では、VADなどで音声区切りを検出するまで音声認識を行いません。ライブ変換を有効にすると、音声区切りを検出する前の段階で音声認識を行うことが可能です。 ライブ変換を有効にするには、AILIA_SPEECH_FLAG_LIVEを使用します。プレビューは、IntermediateCallbackに通知されます。 ライブ変換を使用しない方が時間軸的に後ろの音声も参照できるため、精度は高くなります。 そのため、音声ファイルに対して適用するようなケースではライブ変換は使用せず、マイク入力に対してリアルタム性が必要な場合にライブ変換を使用してください。

仮想メモリモード

仮想メモリモードを使用することでメモリ消費量を抑制することが可能です。具体的に、Whisper MediumをCPU推論した場合、デフォルト設定では5.66GBのメモリが必要ですが、仮想メモリモードを使用することで、2.59GBのメモリで推論が可能です。但し、推論時間は16程度低下します。仮想メモリモードを有効にする場合、ailiaSpeechCreateを呼び出す前にailiaSetTemporaryCachePathで一時ファイルを保存するディレクトリを指定した後、ailiaSpeechCreateのmemory_mode引数にAILIA_MEMORY_REDUCE_CONSTANT | AILIA_MEMORY_REDUCE_CONSTANT_WITH_INPUT_INITIALIZER | AILIA_MEMORY_REUSE_INTERSTAGE | AILIA_MEMORY_REDUCE_CONSTANT_WITH_FILE_MAPPEDを指定してください。

インタフェース

テキスト

音声認識結果として、下記の内容が取得可能です。

項目 内容
text 認識したテキスト。UTF8。
time_stamp_begin テキストの開始時間。秒単位。
time_stamp_end テキストの終了時間。秒単位。
person_id 人物のユニークID。未実装であり、将来の予約。
language テキストの言語コード。自動認識した場合は認識結果、指定した場合は指定した言語コードが入る。
confidence テキストの確信度。0.0に近いほど確信度が低く、1.0が最も確信度が高い。

通知と中断

IntermediateCallbackを使用することで、音声認識の途中のデータを取得することが可能です。 IntermediateCallbackの返り値に1を与えることで、音声認識を中断することが可能です。

無音判定機能

無音判定の設定

デフォルトで30秒分のデータが蓄積された後に音声認識が実行されます。 SetSilentThreshold APIを使用することで、一定時間、無音が続いた段階でテキスト化を実行することが可能です。 第一引数に無音判定するしきい値、第二引数に有音時間、第三引数に無音時間を指定します。 VADを使用しない場合はボリュームによる無音判定、VADを使用する場合はAIモデルによる無音判定を行います。 しきい値には、VADが無効な場合は0.0〜1.0のボリューム、VADが有効な場合は0.0〜1.0のコンフィデンス値を指定します。 VADが無効な場合は0.01など、VADが有効な場合は0.5などを指定します。

VAD (Voice Activity Detection)

AILIA_SPEECH_VAD_TYPE_SILEROとOpenVadFile APIを使用することで、AIによる無音判定を使用することが可能です。ボリュームによる無音判定に比べて、高精度な無音判定が実行可能です。AI音声認識は無音を与えると、「ご清聴ありがとうございました。」などと出力する場合があるため、VADはデフォルトで有効にすることを推奨しています。

用途特化型の機能

文字による制約

AILIA_SPEECH_CONSTRAINT_CHARACTERSとSetConstraint APIを使用することで、認識可能な文字を制約することが可能です。下記のような制約を与えると、数値のみを認識可能にすることが可能です。

u8"1234567890,.億千万百"

単語による制約

AILIA_SPEECH_CONSTRAINT_WORDSとSetConstraint APIを使用することで、認識可能な単語を制約することが可能です。音声コマンドなどで、どの単語が発話されたかどうかを判定するために使用することが可能です。下記のような制約を与えると、コマンド1とコマンド2の確率を取得可能です。

u8"コマンド1,コマンド2"

Prompt

人名や専門用語をPromptとして与えることで、人名や専門用語の認識精度を向上させることが可能です。

u8"ハードウェア ソフトウェア"

誤り訂正辞書

誤り訂正辞書を使用することで、音声認識の後段に文字列置換を行うことで、音声認識誤り訂正を行うことが可能です。誤り訂正辞書では、シンプルな文字列置換を行います。

誤り訂正辞書はOpenDictionary APIを使用して、UTF8のCSVで与えます。サンプルのdict.csvは下記のようになっています。この辞書は、実際に音声認識した場合の誤り方を定義しており、最初に誤った文字列、次に置換先の文字列を記載します。

アイリア,ailia
AIリア,ailia
小和技術,コア技術
アードウェア,ハードウェア
両速技術,要素技術

ポストプロセス

ポストプロセスを使用することで、音声認識の後に、T5による音声認識誤り訂正や、FuguMTによる翻訳を行うことが可能です。T5による音声認識誤り訂正では、医療用語に対する補正モデルを使用可能です。FuguMTによる翻訳では、WhisperのTranslateモードで多言語を英語で音声認識した後、英語から日本語への翻訳を使用可能です。

GPUの使用

WindowsとLinux環境ではcuDNNを使用したGPU推論が可能です。 cuDNNを使用するには、NVIDIAのサイトから、CUDA ToolkitとcuDNNをインストールする必要があります。

CUDA Toolkitはインストーラに沿ってインストールしてください。cuDNNはダウンロードと解凍の後に、環境変数のPATHに通してください。cuDNNのダウンロードにはNVIDIAのデベロッパー登録が必要です。