音声認識エンジン
AmiVoice API では様々な言語や用途に合わせて、複数の音声認識エンジンを提供しています。認識させたい音声に対して最適な音声認識エンジンを選ぶことで、精度を改善することができます。ここでは音声認識エンジンが対応している言語、エンジンの種類や使い分けのポイントについて説明します。
音声認識エンジンの一覧
AmiVoice APIでは、様々な音声認識エンジンを提供しています。End to Endとハイブリッドの違いも参照してください。
End to End
新しい世代の音声認識エンジンです。
| 言語 | エンジン名 | 対応サンプリングレート | 接続エンジン名 |
|---|---|---|---|
| 日本語 | 日本語E2E_汎用 | 8k / 16k | -a2-ja-general |
| 中国語 | 中国語E2E_汎用 | 8k / 16k | -a2-zh-general |
| 多言語 | 多言語E2E_汎用 | 8k / 16k | -a2-multi-general |
| 日本語 | 日本語E2E_汎用バッチ | 8k / 16k | -a2b-ja-general |
| 中国語 | 中国語E2E_汎用バッチ | 8k / 16k | -a2b-zh-general |
| 多言語 | 多言語E2E_汎用バッチ | 8k / 16k | -a2b-multi-general |
- 多言語エンジンは、複数の言語が混ざった音声でも、それぞれの言語で文字起こしすることができるエンジンです。対応している言語は、日本語、英語、中国語です。単語単位の認識結果に、認識された単語の言語を表す言語ラベル(
results[0].tokens[].language)が付与されます。 - バッチエンジンは、レスポンス速度を求めないバッチ処理のために最適化されたエンジンです。精度をより重視したい場合に利用してください。特に非同期HTTPインタフェースではバッチ用のエンジンを指定してください。
ハイブリッド
様々なドメインに最適化した音声認識エンジンです。
| 言語 | エンジン名 | 言語モデル | 対応サンプリングレート | 接続エンジン名 |
|---|---|---|---|---|
| 日本語 | 会話_汎用 | 汎用 | 8k / 16k | -a-general |
| 日本語 | 会話_医療 | 医療会議 | 16k | -a-medical |
| 日本語 | 会話_金融 | 金融 | 16k | -a-bizfinance |
| 日本語 | 会話_保険 | 保険 | 16k | -a-bizinsurance |
| 日本語 | 音声入力_汎用 | 大規模汎用 | 16k | -a-general-input |
| 日本語 | 音声入力_医療 | 医療汎用 | 16k | -a-medical-input |
| 日本語 | 音声入力_保険 | 保険 | 16k | -a-bizinsurance-input |
| 日本語 | 音声入力_金融 | 金融 | 16k | -a-bizfinance-input |
| 英語 | 英語_汎用 | 汎用 | 8k / 16k | -a-general-en |
| 中国語 | 中国語_汎用 | 汎用 | 8k / 16k | -a-general-zh |
| 韓国語 | 韓国語_汎用 | 汎用 | 8k / 16k | -a-general-ko |
| 日本語 | 音声入力_氏名 | 氏名 | 8k / 16k | -a-name-input-private(*1) |
| 日本語 | 音声入力_住所 | 住所 | 8k / 16k | -a-address-input-private(*1) |
| 日本語 | 音声入力_ルール | なし | 16k | -a-rule-input-private(*1) (*2) |
- (*1) AmiVoice API Private で利用可能なエンジンです。
- (*2) 「音声入力_ルール」エンジンは、非同期 HTTP インタフェースではご利用いただけません。
音声認識エンジンの要素
音声認識エンジンを選択するにあたり、構成要素や特性を理解することで、適切なエンジン選択やAPI利用に役立ちます。
End to End/ハイブリッド
End to End/ハイブリッドで共通の要素について説明します。
対応サンプリングレート
すべての音声認識エンジンは16kHzに対応しています。一部のエンジンは電話などでよく使われている8kHzのサンプリングレートの音声に対応しています。サンプリングレートについては、音声フォーマットのサンプリングレートを参照してください。
- 音声を自身で録音する場合は、サンプリングレート16kHzで録音し、16kHzのエンジンを使ってください。
- 電話音声の場合は8kHzのエンジンを使ってください。
接続エンジン名
リクエストパラメータの接続エンジン名 (grammarFileNames)には、表の「接続エンジン名」列の文字列を指定します。AmiVoice API Privateで公開しているエンジン名についてはマイページを参照してください。
ハイブリッド
ハイブリッドの日本語の音声認識エンジンは、用途(音響モデル)と言語モデルの組み合わせで複数のエンジンを提供しています。以下はハイブリッドエンジンについての 説明です。
用途
人と人が自然に話をしているときの音声の文字起こしに最適化された「会話」エンジン、人が機械に向かって話す場合に最適化された「音声入力」エンジンがあります。それぞれ異なったデータセットを元にトレーニングした音響モデルを使っています。ただし、用途は音響モデルの違いだけではなく、それぞれの用途に応じた最適化がされています。
特徴と注意点
「会話」エンジンは「えーっと」や「あのー」などの不要語を除去しやくなっています。標準の設定では、これらの不要語は認識されたうえで自動的に除去されます。また、不要語を敢えて表示するように設定することもできます。フィラー単語の出力指定を参照してください。「音声入力」エンジンを使っている場合、不要語として判断されずに除去されないか、他の単語に誤認識されるケースが多くなります。
ユースケース
- 会議や電話などの音声を文字起こしする場合は「会話」エンジンを使ってください。
- 電子カルテ、レポート、メール、ショートメッセージなどを口述筆記する場合や、ロボットや音声チャットボットなど機械との対話の場合は「音声入力」エンジンを使ってください。
- ユースケースを絞り込めない場合は「会話」エンジンを使ってください。
言語モデル
医療、製薬、金融、保険などの"ドメイン"ごとによく話される語彙や言い回しがあります。これらのドメインごとに最適化した「領域特化」の言語モデルを用意しています。
日本語の言語モデルの一覧です。用途ごとにエンジンとして提供していますので、それぞれのユースケースも合わせて説明します。
言語モデル | 言語モデルの説明と用途ごとのエンジン |
|---|---|
| 汎用 | 用途を限定しない発話内容の文字化に利用できます。 「会話」 専用です 会話_汎用( -a-general): 会議・動画の文字起こし、入力が限定されない場合など |
| 大規模汎用 | 用途を限定しない口述筆記や、音声対話の文字化に利用できます。汎用よりも大きく語彙数が増えています。あまり話されないような言葉や、神社、寺、城、橋、温泉、動物園、水族館、美術館、博物館、ダム、トンネルといったランドマーク・場所・施設の名称 などの語彙が豊富です。 「音声入力」 専用です 音声入力_汎用( -a-general-input): 様々なシーンでの口述筆記、音声対話アプリケーションなど |
| 金融 | 「汎用」言語モデルに加えて、金融業界の用語や言い回しなどが追加されています。 会話_金融( -a-bizfinance): 文字起こしや対面営業時の会話の文字起こしなど音声入力_金融( -a-bizfinance-input): 日報、メール作成の音声入力など |
| 保険 | 「汎用」言語モデルに加えて、保険業界の用語や言い回しなどが追加されています。 会話_保険( -a-bizinsurance): 文字起こしや対面営業時の会話の文字起こしなど音声入力_保険( -a-bizinsurance-input): 日報、メール作成の音声入力など |
| 医療会議 | 「汎用」言語モデルに加えて、様々な診療科目、医療関係の用語、医療業界の会議での言い回しなどが追加されています。多くの病名、薬品名、病院名、手術名、地名などに対応しています。 「会話」 専用です 会話_医療( -a-medical ): 医療業界の会議、診察の患者と医者の会話、医療関連の動画の文字起こし、対面営業の会話の文字起こし、MRの営業日報、など |
| 医療汎用 | 電子カルテの所見、診断書、診療情報提供書、紹介状、介護記録、薬剤師の服薬指導文の作成、様々な医療文書の作成のための口 述筆記に特化しています。 「音声入力」 専用です 音声入力_医療( -a-medical-input): 様々な診療科の医師、薬剤師などの専門家の口述筆記 |
| 氏名 | 人名(フルネーム、姓のみ、名のみ)の認識に特化しています。音声認識結果は、全てカタカナで出力されます。 「音声入力」 専用です 音声入力_氏名( -a-name-input-private): 音声自動応答システムなど |
| 住所 | 住所の認識に特化しています。全国の市区町村名、番地を認識します。 「音声入力」 専用です 音声入力_住所( -a-address-input-private): 音声自動応答システムなど |
| ルールグラマ | ルールグラマ(*3)を用いて、自分で設定した定型文や単語だけを認識させることができます。 「音声入力」 専用です 音声入力_ルール( -a-rule-input-private): 製造業や点検保守などのデータ入力、ロボット操作、など |
- (*3) ルールグラマは業界標準のJSGF(JSpeech Grammar Format)や SRGS (Speech Recognition Grammar Specification)フォーマットを利用できます。詳細は、ルールグラマを参照してください。
日本語の言語モデルのクラス名一覧
日本語の音声認識 エンジンで定義されているクラス名の一覧です。クラスは単語登録をするときに利用します。詳細は、単語登録を参照してください。API利用者が新たなクラスを追加することはできません。
クラス名 | 汎用 | 大規模汎用 | 金融 | 保険 | 医療会議 | 医療汎用 | 氏名 | 住所 | 補足 |
|---|---|---|---|---|---|---|---|---|---|
| 固有名詞 | ● | ● | ● | ● | ● | ||||
| 名前 | ● | ● | ● | ● | ● | 姓を表します | |||
| 名前(名) | ● | ● | ● | ● | ● | 名を表します | |||
| 名前 | ● | 姓名を表します (*4) | |||||||
| 駅名 | ● | ● | ● | ● | ● | ||||
| 地名 | ● | ● | ● | ● | |||||
| 会社名 | ● | ● | ● | ● | ● | ||||
| 部署名 | ● | ● | ● | ● | ● | ||||
| 役職名 | ● | ● | ● | ● | ● | ||||
| 記号 | ● | ● | ● | ● | ● | ||||
| 括弧開き | ● | ● | ● | ● | ● | ||||
| 括弧閉じ | ● | ● | ● | ● | ● | ||||
| 元号 | ● | ● | ● | ● | ● | ● | |||
| 病名 | ● | ● | |||||||
| 薬品名 | ● | ● | |||||||
| 病院名 | ● | ● | |||||||
| 手術名 | ● | ● | |||||||
| 地名_区町村 | ● | ● | |||||||
| 地名_支庁市郡 | ● | ● | |||||||
| フィラー(姓前) | ● | (*5) | |||||||
| フィラー(名後) | ● | (*5) |
- (*4) 名前クラスは医療汎用では姓名を表しますが、その他の言語モデルでは姓を表します。
- (*5) 現在は利用できませんが、今後、フィラー単語の登録に対応予定です。
- ルールグラマ用のエンジンでは、認識させる単語をルールグラマ内で設定するため、単語登録の機能はありません。
中国語の言語モデルのクラス名一覧
中国語の音声認識エンジンで定義されているクラス名の一覧です。
| クラス名 | 汎用 |
|---|---|
| 固有名词一般 | ● |
| 姓 | ● |
| 名 | ● |
韓国語の言語モデルのクラス名一覧
韓国語の音声認識エンジンで定義されているクラス名の一覧です。
| クラス名 | 汎用 |
|---|---|
| 固有名詞 | ● |
| 地名 | ● |
| 駅名 | ● |
| 会社名 | ● |
| 名前(姓) | ● |
| 名前(名) | ● |
End to Endとハイブリッドの違い
ハイブリッドエンジンは伝統的な統計モデルを使った音声認識エンジンです。医療など、業界固有の語彙に数多く対応する必要があるケースや、ハイブリッドエンジン固有の機能が必要な場合は引き続き利用を継続してください。End to Endエンジンは、新しい世代のAmiVoice音声認識エンジンです。汎用的な用途では精度の高いケースが多いため、新しくAmiVoice APIを利用する場合は、まずはEnd to Endエンジンを試してみてください。すでにAmiVoice APIをお使いの場合は、変更してもアプリケーションに影響が出ないかどうかを確認して、移行を検討してください。
ハイブリッドエンジンの特徴
- 音響モデルと言語モデル を組み合わせて音声認識を行います。様々なドメインごとに最適化した言語モデルを使った音声認識エンジンを利用できます。
- 単語登録でクラスを利用することができます。
- 単語単位の結果の
starttimeとendtimeに単語ごとの正確な時間情報を取得できます。
End to Endエンジンの特徴
- 汎用的な語彙のエンジンのみ提供しています。
- 単語登録ではクラスを利用することができません。
- 単語単位の結果で、単語ごとの読みの情報は取得できません。
- 単語単位の結果の
starttimeとendtimeで得られる時間情報は、ハイブリッドに比べて正確には得られません。 - ハイブリッドエンジンでは起きない誤りのパターンとして、一部の結果を繰り返してしまう場合があります。特に音質が著しく悪い音声や、長すぎる音声(20秒以上)に起きやすい傾向があります。
- フィラー単語の自動削除の抑制には対応していません。フィラーはすべて自動的に削除されます。
- 2025-03-25現在は、End to Endエンジンでは単語登録することができません。単語登録が必要な場合は、ハイブリッドエンジンを利用してください。
- 2025-03-25現在は、中国語のEnd to Endエンジンではフィラーの自動削除は対応していません。
費用
エンジンによって費用が異なります。詳細はAmiVoice APIの価格を参照してください。
認識精度について
音声認識エンジンのボキャブラリにない単語は出力されません。ボキャブラリにない単語が発話されると、発音の似た単語や、発音の似た短い単語の組み合わせ、単に 誤った単語に認識されます。計算リソースや、計算時間の制約により音声認識エンジンごとにボキャブラリが決まっています。「会話_汎用」や「音声入力_汎用」などの汎用エンジンは様々なシーンで活用できるように多くのボキャブラリが登録されていますが、特定の業界や用途に特化したような単語は含まれていません。
医療・金融・保険などの業界ごとによく使われる専門用語は、特定の業界に特化したエンジンを使うことで、その業界でよく使われる単語に対して高い認識率を実現できます。さらに特定の組織などでよく使われる単語に対しては、単語登録を行うことで対応できます。
汎用エンジンと領域特化エンジンでどの程度の認識率の差がでるのか、AmiVoice Tech Blogで比較して報告しています。AmiVoiceの領域特化エンジンの音声認識精度を比べてみた(汎用 vs 電子カルテ)や【同じ発話で比較検証】音声入力エンジンと会話エンジンの認識結果の違いとはを参照してください。