AmiVoice APIで話者ダイアライゼーションが使えるようになりました
山本真也
API開発チーム責任者の山本です。
ACPのAmiVoice APIで、話者ダイアライゼーション(Speaker Diarization)が使えるようになりました。話者ダイアライゼーションとは、複数人が話している音声に対して、話者ごとに発話区間を推定する機能です。例えば、ひとつのマイクで会議を録音しても、ここからここまでの発言はAさん、ここからここまではBさん、といった区別をつけることができるようになります。
使い方
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"
},
...
starttimeとendtimeの間が、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の音声データまで受け付けます。
リアルタイムでも利用可能に
2023年2月より、話者ダイアライゼーションは、同期HTTP音声認識APIとWebSocket APIでも利用できるようになりました。音声ファイルをテキスト化する場合だけでなく、発話と同時に音声認識処理を行う場合でもお使い頂けます。
会議や対面営業、面談、動画への字幕付与など、複数人が話をするシーンで有効に活用できます。この機会に是非、話者ダイアライゼーションを試してみてください。
この記事を書いた人
-
山本真也
ACPプラットフォームビジネスの責任者で、APIの開発チームの責任者も兼務しています。テックブログでは開発チームの立場で書きます。