音声からテキストへ

自動音声認識(ASR)は、IVR、本人確認、さまざまな種類の音声ボット/アシスタントなどのユースケースで、アプリが音声入力をサポートすることを可能にします。この機能を使用すると、アプリは、ユーザーが数字(DTMF)を入力するのではなく、口に出して質問に答えることを期待すると、ユーザーの音声を(テキスト形式で)書き起こします。

注:この機能は有料です。正確な料金は Voice API価格 ページの「プログラマブル機能」の下にある。

仕組み

AppVonageUserAppVonageUsertalk/stream\ninputnext action(s)phone callanswer callbackNCCOaudio messagespeechtextNCCOnext action(s)

通常、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リファレンス 詳細はこちら。