音声からテキストへ
自動音声認識(ASR)は、IVR、本人確認、さまざまな種類の音声ボット/アシスタントなどのユースケースで、アプリが音声入力をサポートすることを可能にします。この機能を使用すると、アプリは、ユーザーが数字(DTMF)を入力するのではなく、口に出して質問に答えることを期待すると、ユーザーの音声を(テキスト形式で)書き起こします。
注:この機能は有料です。正確な料金は Voice API価格 ページの「プログラマブル機能」の下にある。
仕組み
通常、ASRは、ユーザーに対して再生される音声メッセージと組み合わせて使用される。メッセージは 音声ファイル または 音声合成または、その両方を組み合わせて順次再生する。ASRを作動させるには、NCCOに input アクションにスピーチパラメータを指定する。
NCCOの例
[
{
"action": "talk",
"text": "Hello!"
},
{
"action": "talk",
"text": "Please tell us, how can we help you today?",
"bargeIn": true
},
{
"eventUrl": [
"https://api.example.com/callbacks/events"
],
"eventMethod": "POST",
"action": "input",
"type": [ "speech" ],
"speech": {
"language": "en-gb",
"context": [
"support",
"buy",
"credit",
"account"
],
"endOnSilence": 0.5,
"saveAudio": true,
"sensitivity": "90"
}
}
]
について NCCOリファレンスガイド には、ASRと組み合わせて使用できるすべてのパラメータに関する情報が含まれています。 input NCCOの行動
入力タイプ
セット type として speech 音声入力専用 [ "dtmf", "speech" ] スピーチか DTMF.
言語
ユーザーの発話言語は、次のように指定する必要があります。 language パラメータ(en-US デフォルト)。
対応言語
| 言語 | コード |
|---|---|
| アフリカーンス語(南アフリカ) | af-ZA |
| アルバニア語(アルバニア) | sq-AL |
| アムハラ語(エチオピア) | am-ET |
| アラビア語(アルジェリア) | ar-DZ |
| アラビア語(バーレーン) | ar-BH |
| アラビア語(エジプト) | ar-EG |
| アラビア語(イラク) | ar-IQ |
| アラビア語(イスラエル) | ar-IL |
| アラビア語(ヨルダン) | ar-JO |
| アラビア語(クウェート) | ar-KW |
| アラビア語(レバノン) | ar-LB |
| アラビア語(モロッコ) | ar-MA |
| アラビア語(オマーン) | ar-OM |
| アラビア語(カタール) | ar-QA |
| アラビア語(サウジアラビア) | ar-SA |
| アラビア語(パレスチナ) | ar-PS |
| アラビア語(チュニジア) | ar-TN |
| アラビア語(アラブ首長国連邦) | ar-AE |
| アルメニア語 | hy-AM |
| アゼルバイジャン語(アゼルバイジャン) | az-AZ |
| バスク(スペイン) | eu-ES |
| ベンガル語(バングラデシュ) | bn-BD |
| ベンガル語(インド) | bn-IN |
| ブルガリア語(ブルガリア) | bg-BG |
| ビルマ語(ミャンマー) | my-MM |
| カタロニア語(スペイン) | ca-ES |
| 中国語、広東語(繁体字、香港) | yue-hant-HK |
| 中国語、北京語(簡体字、中国) | zh (cmn-hans-cn) |
| 中国語、北京語(繁体字、台湾) | zh-TW (cmn-hant-TW) |
| クロアチア語(クロアチア) | hr-HR |
| チェコ | cs-CZ |
| デンマーク語(デンマーク) | da-DK |
| オランダ語(ベルギー) | nl-BE |
| オランダ語 | nl-NL |
| 英語(オーストラリア) | en-AU |
| 英語(カナダ) | en-CA |
| 英語(ガーナ) | en-GH |
| 英語(インド) | en-IN |
| 英語(アイルランド) | en-IE |
| 英語(ケニア) | en-KE |
| 英語(ニュージーランド) | en-NZ |
| 英語(ナイジェリア) | en-NG |
| 英語(フィリピン) | en-PH |
| 英語(シンガポール) | en-SG |
| 英語(南アフリカ) | en-ZA |
| 英語(タンザニア) | en-TZ |
| 英語(イギリス) | en-GB |
| 英語(アメリカ) | en-US |
| エストニア語(エストニア) | et-EE |
| フィリピン人 | fil-PH |
| フィンランド語(フィンランド) | fi-FI |
| フランス語(カナダ) | fr-CA |
| フランス | fr-FR |
| ガリシア語(スペイン) | gl-ES |
| グルジア語 | ka-GE |
| ドイツ語(ドイツ) | de-DE |
| ギリシャ | el-GR |
| グジャラート語(インド) | gu-IN |
| ヘブライ語(イスラエル) | he-IL |
| ヒンディー語(インド) | hi-IN |
| ハンガリー語(ハンガリー) | hu-HU |
| アイスランド語(アイスランド) | is-IS |
| インドネシア語(インドネシア) | id-ID |
| イタリア語(イタリア) | it-IT |
| 日本語(日本) | ja-JP |
| ジャワ語 | jv-ID |
| カンナダ語(インド) | kn-IN |
| クメール語 | km-KH |
| 韓国語 | ko-KR |
| ラオス | lo-LA |
| ラトビア語(ラトビア) | lv-LV |
| リトアニア語(リトアニア) | lt-LT |
| マケドニア語(北マケドニア) | mk-MK |
| マレー語(マレーシア) | ms-MY |
| マラヤーラム語(インド) | ml-IN |
| マラーティー語(インド) | mr-IN |
| モンゴル語 | mn-MN |
| ネパール語(ネパール) | ne-NP |
| ノルウェー語ブークモール(ノルウェー) | nb-NO |
| ペルシャ語(イラン) | fa-IR |
| ポーランド語(ポーランド) | pl-PL |
| ポルトガル語(ブラジル) | pt-BR |
| ポルトガル語(ポルトガル) | pt-PT |
| パンジャブ語(インド・グルムキー語) | pa-guru-IN |
| ルーマニア語(ルーマニア) | ro-RO |
| ロシア語 | ru-RU |
| セルビア語(セルビア) | sr-RS |
| シンハラ語(スリランカ) | si-LK |
| スロバキア語(スロバキア) | sk-SK |
| スロベニア語(スロベニア) | sl-SI |
| スペイン語(アルゼンチン) | es-AR |
| スペイン語(ボリビア) | es-BO |
| スペイン語(チリ) | es-CL |
| スペイン語(コロンビア) | es-CO |
| スペイン語(コスタリカ) | es-CR |
| スペイン語(ドミニカ共和国) | es-DO |
| スペイン語(エクアドル) | es-EC |
| スペイン語(エルサルバドル) | es-SV |
| スペイン語(グアテマラ) | es-GT |
| スペイン語(ホンジュラス) | es-HN |
| スペイン語(メキシコ) | es-MX |
| スペイン語(ニカラグア) | es-NI |
| スペイン語(パナマ) | es-PA |
| スペイン語(パラグアイ) | es-PY |
| スペイン語(ペルー) | es-PE |
| スペイン語(プエルトリコ) | es-PR |
| スペイン語(スペイン) | es-ES |
| スペイン語(アメリカ) | es-US |
| スペイン語(ウルグアイ) | es-UY |
| スペイン語(ベネズエラ) | es-VE |
| スンダ語(インドネシア) | su-ID |
| スワヒリ語(ケニア) | sw-KE |
| スワヒリ語(タンザニア) | sw-TZ |
| スウェーデン語(スウェーデン) | sv-SE |
| タミル語(インド) | ta-IN |
| タミル語(マレーシア) | ta-MY |
| タミル語(シンガポール) | ta-SG |
| タミル語(スリランカ) | ta-LK |
| テルグ語(インド) | te-IN |
| タイ | th-TH |
| トルコ語 | tr-TR |
| ウクライナ語(ウクライナ) | uk-UA |
| ウルドゥー語(インド) | ur-IN |
| ウルドゥー語(パキスタン) | ur-PK |
| ウズベク語(ウズベキスタン) | uz-UZ |
| ベトナム人 | vi-VN |
| ズールー(南アフリカ) | zu-ZA |
コンテクスト
いくつかのヒントは context 配列のパラメータを使用して、認識品質を向上させることができます。設定される値は、たとえばユーザーから期待される単語やフレーズかもしれない、 ['one', 'two', 'three'] または ['support', 'order starship'].
バージ・イン
ユーザーが初めてではなく電話をかけてきた場合、ユーザーはすでに質問される内容を知っている可能性があるため、音声メッセージが終わる前でも話し始める可能性がある。それをサポートするために bargeIn TTSのパラメータ(または stream - メッセージにどんなアクションが使われようとも)をアクティブにする。
最初のTTS/音声メッセージは、以下の機能を作動させることなく、短い最初の挨拶にすることをお勧めします。 bargeIn オプションを使用してユーザー体験を向上させることができます。もし bargeIn が最初の挨拶のためにオンになっている場合、ユーザーはプロンプトを全く聞くことなく、不注意にそれを中断する可能性がある。なぜなら、バックグラウンドノイズは、その最初の瞬間にアクティブなインタラクションとしてアプリケーションによって解釈される可能性があるからである。
オーディオの保存
音声は任意で保存することができる。録音を取得するには saveAudio パラメータが設定されていなければならない。 recording_url はコールバックリクエストのペイロードに含まれます。これは、書き起こしを元の音声と比較するのに便利です。コールバックリクエストのペイロードには 録音をダウンロードする 音声をダウンロードするためのコード・スニペット。
イベント・ペイロードの例
いったんNCCO input アクションが完了すると、入力コールバックが送信されます:
{
"speech": {
"recording_url": "https://api-us.nexmo.com/v1/files/ee94a327-ab6b-4bef-86bf-cadca33343e9",
"timeout_reason": "end_on_silence_timeout",
"results": [
{
"confidence": "0.9405097",
"text": "Support"
},
{
"confidence": "0.70543784",
"text": "Supper"
},
{
"confidence": "0.5949854",
"text": "Puppy"
}
]
},
"dtmf": {
"digits": null,
"timed_out": false
},
"uuid": "529aa8f0-0ad8-42b0-ad61-b76dca18bb52",
"conversation_uuid": "CON-7347b08d-5f51-478f-bfb2-e8c3fd39509f",
"timestamp": "2020-02-07T11:42:40.933Z"
}
レスポンスボディには、アプリケーションロジックとユーザー入力に基づいた次のコールフローアクションを含む、新しいNCCOが期待される(speech.results.text).参照 Webhookリファレンス 詳細はこちら。