フィラー単語の自動削除
「あのー」や「えーっと」などのフィラー単語(不要語)は自動的に音声認識結果から取り除かれます。
例えば、以下のように発話したとします。
えーっと、会議があるので、えー、それまでに、あのー、資料を作成しておきます。
この音声の認識結果は以下のようになります。
会議があるのでそれまでに資料を作成しておきます。
以下のような単語がフィラー単語として扱われています。
言語 | フィラー単語の例 |
---|---|
日本語 | あー, あのー, えー, おー, えっと |
英語 | ah, urm, hmm |
中国語 | 呃, 啊, 哎呀 |
韓国語 | 어, 으, 음 |
- フィラー単語を利用者が追加することはできません。
- フィラー単語は精度向上の過程で変更される可能性があり、フィラー単語の一覧は公開していません。
test-with-filler.wavという音声ファイルに上記の発話内容が含まれている場合、以下のようにcurlコマンドを実行すると、フィラー単語の自動的削除が確認できます。この手順の詳細は短い音声ファイルのを書き起こしを参照してください。WebSocketの場合は、音声認識のリクエストを参照してください。
curl -sS https://acp-api.amivoice.com/v1/recognize \
-F u={APPKEY} \
-F "d=-a-general" \
-F a=@test-with-filler.wav | jq
レスポンス
{
"results": [
{
"tokens": [
{
"written": "会議",
"confidence": 0.99,
"starttime": 656,
"endtime": 1184,
"spoken": "かいぎ"
},
{
"written": "が",
"confidence": 1,
"starttime": 1184,
"endtime": 1312,
"spoken": "が"
},
{
"written": "ある",
"confidence": 1,
"starttime": 1312,
"endtime": 1536,
"spoken": "ある"
},
{
"written": "ので",
"confidence": 1,
"starttime": 1536,
"endtime": 1920,
"spoken": "ので"
},
{
"written": "それ",
"confidence": 1,
"starttime": 2384,
"endtime": 2736,
"spoken": "それ"
},
{
"written": "まで",
"confidence": 1,
"starttime": 2736,
"endtime": 3024,
"spoken": "まで"
},
{
"written": "に",
"confidence": 1,
"starttime": 3024,
"endtime": 3296,
"spoken": "に"
},
{
"written": "資料",
"confidence": 0.97,
"starttime": 3920,
"endtime": 4384,
"spoken": "しりょう"
},
{
"written": "を",
"confidence": 1,
"starttime": 4384,
"endtime": 4544,
"spoken": "を"
},
{
"written": "作成",
"confidence": 0.98,
"starttime": 4576,
"endtime": 5136,
"spoken": "さくせい"
},
{
"written": "して",
"confidence": 1,
"starttime": 5136,
"endtime": 5392,
"spoken": "して"
},
{
"written": "おき",
"confidence": 0.99,
"starttime": 5392,
"endtime": 5664,
"spoken": "おき"
},
{
"written": "ます",
"confidence": 0.98,
"starttime": 5664,
"endtime": 5952,
"spoken": "ます"
},
{
"written": "。",
"confidence": 0.21,
"starttime": 5952,
"endtime": 5984,
"spoken": "_"
}
],
"confidence": 0.993,
"starttime": 0,
"endtime": 5984,
"tags": [],
"rulename": "",
"text": "会議があるのでそれまでに資料を作成しておきます。"
}
],
"utteranceid": "20240801/08/01910b1c09cc0a303c1094c9_20240801_082432",
"text": "会議があるのでそれまでに資料を作成しておきます。",
"code": "",
"message": ""
}
フィラー単語の自動削除の抑制
リクエストパラメータでkeepFillerToken=1
を設定すると、フィラー単語の自動削除がされません。例えば、コールセンターのオペレータの話し方について、フィラー単語を多く使いすぎていないかどうかをチェックしたい場合などでこの設定を利用できます。
上記の音声に対する認識結果の例:
%えっと%会議があるので%えー%それまでに%あのー%資料を作成しておきます。
フィラー単語は前後を半角の「%」で囲まれています。プログラムでこの表記を使って適切に扱ってください。以下は認識結果のレスポンスの例です。
{
"results": [
{
"tokens": [
{
"written": "%えっと%",
"confidence": 0.95,
"starttime": 0,
"endtime": 592,
"spoken": "えっと"
},
/* 略 */
],
"text": "%えっと%会議があるので%えー%それまでに%あのー%資料を作成しておきます。",
/* 略 */
}
],
"text": "%えっと%会議があるので%えー%それまでに%あのー%資料を作成しておきます。",
/* 略 */
}
「ぱーせんと」と発話した場合は、「%」は 1 つの単語になります。results[0].tokens[].written
が「%」という1文字となり、フィラー単語の「%」と区別ができます。
{
"results": [
{
"tokens": [
{
"written": "%",
"confidence": 1,
"starttime": 0,
"endtime": 800,
"spoken": "ぱーせんと"
}
/* 略 */
}
}
前述のtest-with-filler.wavという音声ファイルに対して、keepFillerToken=1
を設定します。以下のようにcurlコマンドを実行すると、フィラー単語を含んだ結果が得られます。この手順の詳細は短い音声ファイルのを書き起こしを参照してください。WebSocketの場合は、音声認識のリクエストを参照してください。
curlコマンドで実行したときの例
curl -sS https://acp-api.amivoice.com/v1/recognize \
-F u={APPKEY} \
-F "d=-a-general keepFillerToken=1" \
-F a=@test-with-filler.wav | jq
レスポンス
{
"results": [
{
"tokens": [
{
"written": "%えっと%",
"confidence": 0.95,
"starttime": 0,
"endtime": 592,
"spoken": "えっと"
},
{
"written": "会議",
"confidence": 0.99,
"starttime": 656,
"endtime": 1184,
"spoken": "かいぎ"
},
{
"written": "が",
"confidence": 1,
"starttime": 1184,
"endtime": 1312,
"spoken": "が"
},
{
"written": "ある",
"confidence": 1,
"starttime": 1312,
"endtime": 1536,
"spoken": "ある"
},
{
"written": "ので",
"confidence": 1,
"starttime": 1536,
"endtime": 1920,
"spoken": "ので"
},
{
"written": "%えー%",
"confidence": 0.99,
"starttime": 1968,
"endtime": 2224,
"spoken": "えー"
},
{
"written": "それ",
"confidence": 1,
"starttime": 2224,
"endtime": 2528,
"spoken": "それ"
},
{
"written": "まで",
"confidence": 1,
"starttime": 2528,
"endtime": 2800,
"spoken": "まで"
},
{
"written": "に",
"confidence": 1,
"starttime": 2800,
"endtime": 3088,
"spoken": "に"
},
{
"written": "%あのー%",
"confidence": 1,
"starttime": 3120,
"endtime": 3600,
"spoken": "あのー"
},
{
"written": "資料",
"confidence": 1,
"starttime": 3712,
"endtime": 4176,
"spoken": "しりょう"
},
{
"written": "を",
"confidence": 1,
"starttime": 4176,
"endtime": 4336,
"spoken": "を"
},
{
"written": "作成",
"confidence": 1,
"starttime": 4368,
"endtime": 4928,
"spoken": "さくせい"
},
{
"written": "して",
"confidence": 1,
"starttime": 4928,
"endtime": 5184,
"spoken": "して"
},
{
"written": "おき",
"confidence": 0.99,
"starttime": 5184,
"endtime": 5456,
"spoken": "おき"
},
{
"written": "ます",
"confidence": 0.98,
"starttime": 5456,
"endtime": 5744,
"spoken": "ます"
},
{
"written": "。",
"confidence": 0.32,
"starttime": 5744,
"endtime": 5776,
"spoken": "_"
}
],
"confidence": 0.993,
"starttime": 0,
"endtime": 5776,
"tags": [],
"rulename": "",
"text": "%えっと%会議があるので%えー%それまでに%あのー%資料を作成しておきます。"
}
],
"utteranceid": "20240801/08/01910b1dde010a301e8894c2_20240801_082632",
"text": "%えっと%会議があるので%えー%それまでに%あのー%資料を作成しておきます。",
"code": "",
"message": ""
}