AmiVoice Techblog

AmiVoiceの音声認識に関する技術情報・活用方法・組み込み方などを発信するアドバンスト・メディアのテックブログです

非同期HTTP音声認識APIで話者ダイアライゼーションが使えるようになりました

f:id:amivoice_techblog:20210115094116p:plain山本真也

API開発チーム責任者の山本です。

ACPの非同期HTTP音声認識APIで、話者ダイアライゼーション(Speaker Diarization)が使えるようになりました。話者ダイアライゼーションとは、複数人が話している音声に対して、話者ごとに発話区間を推定する機能です。例えば、ひとつのマイクで会議を録音しても、ここからここまでの発言はAさん、ここからここまではBさん、といった区別をつけることができるようになります。

f:id:amivoice_techblog:20220127142706p:plain

図. 話者ダイアライゼーションのイメージ

使い方

ACPで話者ダイアライゼーションを使うのは簡単です。音声認識のリクエスト時に、dパラメータにspeakerDiarization=Trueのように設定するだけです。音声認識の結果に推定された話者情報が含まれるようになります。

 

ACPサイトで提供しているサンプルの音声をcurlコマンドを使って、話者ダイアライゼーションを有効にして非同期音声認識APIを実行する場合は以下のようにします。

$ curl -X POST -F a=@../../audio/test.wav "https://acp-api-async.amivoice.com
/v1/recognitions?d=grammarFileNames=-a-general%20speakerDiarization=True&u={APPKEY}"

結果

話者ダイアライゼーションの結果は、単語単位の音声認識結果の中にあります。以下のように、結果レスポンスのsegments[n].results[n].tokens[n]に、labelという属性が追加されていて、話者を区別するためのラベル(speaker0, speaker1, speaker2, ...)がセットされます。例えば、3名の話者が推定された場合、"speaker0"、"speaker1"、"speaker2"のようなラベルが単語ごとに設定されることになります。

{
  "segments": [
        {
            "results": [
                {
                    "tokens": [
                        {
                          "starttime": 570,
                            "endtime": 1578,
                        "written": "アドバンスト・メディア",
                          "spoken": "あどばんすとめでぃあ",
                            "confidence": 1.0,
                          "label": "speaker0"
                      },
                    ...

starttimeendtimeの間が、labelの話者が発話していると推定される区間です。この時間情報を使って話者の交代などを判定してください。

また、事前に声紋の登録が不要な代わりに、”誰”が話しているのかはわかりませんので、"speaker0"のような話者ラベルが、誰に相当するのかはアプリケーション側でうまく取り扱ってください。

精度向上のヒント

音声に含まれると想定される最小、最大の人数を与えることができます。例えば、会議に参加する人数が5名だと分かっている場合は、リクエスト時のdパラメータに diarizationMinSpeaker=5 diarizationMaxSpeaker=5 を追加することで、推定の精度を向上させることができます。

curlコマンドを使った場合の例:

$ curl -X POST -F a=@../../audio/test.wav "https://acp-api-async.amivoice.com
/v1/recognitions?d=grammarFileNames=-a-general%20speakerDiarization=True
%20diarizationMinSpeaker=5%20diarizationMaxSpeaker=5
&u={APPKEY}"

何も指定しないと、1〜10名の間で推定を行います。最大推定話者数は10名を想定していますが、それ以上に設定することも可能です。

制限事項

話者ダイアライゼーションを有効にすると、送信できる音声の長さが最大3時間となります。それよりも長い音声データを送信すると、リクエスト時にエラーを返します。

話者ダイアライゼーションを利用しない場合は、非同期HTTP音声認識APIへ送信できる音声はサイズで制限されており、約2.14GBの音声データまで受け付けます。

今後

現在のところ、話者ダイアライゼーションは、非同期HTTP音声認識APIでのみ利用できます。今後も、新しい機能は非同期HTTP音声認識APIではじめに実装されることが多くなると思いますので、この機会に是非、非同期HTTP音声認識APIを試してみてください。

同期HTTP音声認識APIや、WebSocket APIでも使えるように対応していく予定です。

 

この記事を書いた人

  • f:id:amivoice_techblog:20210115094116p:plain


    山本真也

    ACPプラットフォームビジネスの責任者で、APIの開発チームの責任者も兼務しています。テックブログでは開発チームの立場で書きます。