ユーザー辞書(単語登録・単語強調)
AmiVoice API にはユーザー辞書機能があり、認識しない単語や認識しにくい単語を認識させたい場合、ハイブリッドエンジンでは「単語登録」が、End to End エンジンでは「単語強調」が行えます。
ここではまず、ユーザー辞書機能を簡単に試せる手順を紹介します。
クイックスタート
Python のサンプルコードを実行するには、requestsライブラリが必要です。 以下のコードを quickstart.py などのファイル名で保存し、
python -m pip install requests
以下のコマンドで実行してください。
python quickstart.py
環境によっては、python の代わりに python3 または py を使用してください。
ユーザー辞書登録をする
ユーザー辞書登録 API を利用するか、マイページからユーザー辞書登録を行います。ここでは、「会話_汎用」エンジン(-a-general)で「とりぷるだぶる」という発話を「WWW」と認識するように、以下のように登録します。
- macOS / Linux
- Windows (PowerShell)
- Windows (コマンドプロンプト)
- マイページ
- Python
{API_key}には自身のアカウントの API キーを指定します。{profile_id}には任意のプロファイル ID を指定します。たとえばtestというプロファイル ID を使用したい場合は、以下の{profile_id}の部分にtestと記述します。
curl https://acp-api.amivoice.com/profilewords/-a-general/{profile_id} \
-H "Authorization: Bearer {API_key}" \
-H "Content-Type: application/json" \
-d '{"profilewords":[{"written":"WWW","spoken":"とりぷるだぶる"}]}' | jq
curlコマンドがインストールされていない場合、https://curl.se/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してcurlをインストールしてください。- 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
{API_key}には自身のアカウントの API キーを指定します。{profile_id}には任意のプロファイル ID を指定します。たとえばtestというプロファイル ID を使用したい場合は、以下の{profile_id}の部分にtestと記述します。
curl.exe https://acp-api.amivoice.com/profilewords/-a-general/{profile_id} `
-H "Authorization: Bearer {API_key}" `
-H "Content-Type: application/json" `
-d '{"profilewords":[{"written":"WWW","spoken":"とりぷるだぶる"}]}' | jq
- PowerShell では
curlはInvoke-WebRequestの別名になっているため、curl.exeと明示してください。Windows 10 バージョン 1803 以降にはcurl.exeが標準で含まれています。含まれていない場合は https://curl.se/ からインストールしてください。 - 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
{API_key}には自身のアカウントの API キーを指定します。{profile_id}には任意のプロファイル ID を指定します。たとえばtestというプロファイル ID を使用したい場合は、以下の{profile_id}の部分にtestと記述します。
curl https://acp-api.amivoice.com/profilewords/-a-general/{profile_id} ^
-H "Authorization: Bearer {API_key}" ^
-H "Content-Type: application/json" ^
-d "{""profilewords"":[{""written"":""WWW"",""spoken"":""とりぷるだぶる""}]}" | jq
- Windows 10 バージョン 1803 以降には
curlが標準で含まれています。含まれていない場合は https://curl.se/ からインストールしてください。 - コマンドプロンプトでは、
'(シングルクオーテーション)を JSON の文字列の指定に利用できないため、"(ダブルクォーテーション)を用いてください。かつ、内部で使用するダブルクオーテーションはエスケープ(""もしくは\")してください。 - 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
マイページでのユーザー辞書登録は、「認識率の調整」のページ内の「ユーザー辞書登録」セクション(このリンクから直接アクセスすることができます)で行います。アクセスにはログインが必要です。
以下の手順で、直接入力で単語を登録します。
- エンジン名のプルダウンから[-a-general]を選択し、[決定]をクリックします。
- [単語の新規登録]から[直接登録]タブを選び、[表記]に「WWW」、[読み]に「とりぷるだぶる」を入力します。
- [追加する]ボタンをクリックします。
- 入力した単語が[登録済みの単語リスト]の一覧に表示されたことが確認できたら完了です。
マイページでユーザー辞書登録を行った場合、登録先のプロファイルのプロファイル ID はサービス ID になります。例えば、サービス ID が「user01」の場合は、プロファイル ID も「user01」になります。
{API_key}には自身のアカウントの API キーを指定します。{profile_id}には任意のプロファイル ID を指定します。たとえばtestというプロファイル ID を使用したい場合は、以下の{profile_id}の部分にtestと記述します。
import requests
import json
dgn = "-a-general" # 接続エンジン名の指定
pid = "{profile_id}" # 使用するプロファイルIDに置き換えてください
api_key = "{API_key}" # 実際のAPIキーに置き換えてください
endpoint = f"https://acp-api.amivoice.com/profilewords/{dgn}/{pid}"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
data = {
"profilewords": [
{"written": "WWW", "spoken": "とりぷるだぶる"}
]
}
# POSTリクエストを送信
response = requests.post(endpoint, headers=headers, json=data)
# レスポンスのステータスコードを確認
if response.status_code == 200:
# JSONレスポンスを表示
response_json = response.json()
print(json.dumps(response_json, indent=4, ensure_ascii=False))
else:
print(f"Error: {response.status_code}{response.text}")
音声ファイルを用意する
書き起こしたい音声ファイルを用意します。以下のサンプル音声(www.wav)をそのまま使えます。
対応している音声ファイルの形式については音声フォーマットについてを参照してください。
音声認識を実行する
以下を実行してください。{API_key}は自身のアカウントの API キーに、{profile_id}は使用するプロファイルのプロファイル ID に、www.wav は使用する音声ファイルのパスに置き換えてください。
- curl (macOS / Linux)
- curl (Windows PowerShell)
- curl (Windows コマンドプロンプト)
- Python
curl https://acp-api.amivoice.com/v1/recognize \
-F u={API_key} \
-F d="grammarFileNames=-a-general profileId=:{profile_id}" \
-F a=@www.wav | jq
curlコマンドがインストールされていない場合、https://curl.se/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してcurlをインストールしてください。- 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
curl.exe https://acp-api.amivoice.com/v1/recognize `
-F u={API_key} `
-F d="grammarFileNames=-a-general profileId=:{profile_id}" `
-F a=@www.wav | jq
- PowerShell では
curlはInvoke-WebRequestの別名になっているため、curl.exeと明示してください。Windows 10 バージョン 1803 以降にはcurl.exeが標準で含まれています。含まれていない場合は https://curl.se/ からインストールしてください。 - 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
curl https://acp-api.amivoice.com/v1/recognize ^
-F u={API_key} ^
-F d="grammarFileNames=-a-general profileId=:{profile_id}" ^
-F a=@www.wav | jq
- Windows 10 バージョン 1803 以降には
curlが標準で含まれています。含まれていない場合は https://curl.se/ からインストールしてください。 - 結果テキストはUnicodeエスケープされています。上記コマンドでは、レスポンスを見やすく整形するために
jqを使用しています。jqがインストールされていない場合は、| jqの部分を除いて実行してみてください。jqコマンドは、https://stedolan.github.io/jq/ からご利用の OS のパッケージをダウンロードするか、パッケージマネージャを利用してインストールできます。
import requests
api_key = "{API_key}"
pid = "{profile_id}" # 例: test
with open("www.wav", "rb") as f:
response = requests.post(
"https://acp-api.amivoice.com/v1/recognize",
data={
"d": f"grammarFileNames=-a-general profileId=:{pid}",
"u": api_key
},
files={"a": f}
)
print(response.json())
結果を確認する
成功すると以下のような JSON が返ります。text フィールドに書き起こし結果が含まれます。
{
"results": [
{
"tokens": [ ... ],
"confidence": 0.94,
"starttime": 500,
"endtime": 2084,
"tags": [],
"rulename": "",
"text": "WWW"
}
],
"utteranceid": "20260611/18/019eb5f848ac0a3013ba94cb_20260611_181648",
"text": "WWW",
"code": "",
"message": ""
}
詳細なレスポンスの内容については音声認識の結果を参照してください。
次のステップ
ハイブリッドエンジンの場合、デフォルトの状態では、音声認識エンジンは予め登録されている単語しか認識することができません。このため固有名詞などでエンジンが知らない単語を認識させたい場合、その単語の情報を追加で登録する必要があります。このための機能が「単語登録」です。
一方、End to End エンジンの場合、ハイブリッドエンジンとは音声認識の仕組みが異なり、「予め登録されている単語」というものを持っていません。認識しない・認識しにくい単語を認識させたい場合は、その単語の出現頻度を高める「単語強調」を行います。
このセクションでは以下を順に説明します。
APIのリファレンスは以下を参照してください。
言語によってはユーザー辞書に対応していません。詳細はAmiVoice APIが対応している言語を参照してください。
AmiVoice Tech Blogでもユーザー辞書の様々なTIPSを紹介しています。