사용자 사전(단어 등록·단어 강조)
AmiVoice API에는 사용자 사전 기능이 있으며, 인식되지 않는 단어나 인식하기 어려운 단어를 인식시키고 싶은 경우, 하이브리드 엔진에서는 "단어 등록"을, End to End 엔진에서는 "단어 강조"를 할 수 있습니다.
여기서는 먼저 사용자 사전 기능을 간단히 테스트해볼 수 있는 절차를 소개합니다.
Quick Start
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 key를 지정합니다.{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 key를 지정합니다.{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 key를 지정합니다.{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 key를 지정합니다.{profile_id}에는 임의의 프로파일 ID를 지정합니다. 예를 들어test라는 프로파일 ID를 사용하고 싶은 경우 아래의{profile_id}부분에test라고 기재합니다.
import requests
import json
dgn = "-a-general" # 연결 엔진 이름 지정
pid = "{profile_id}" # 사용할 프로파일 ID를 지정하십시오
api_key = "{API_key}" # 실제 API key를 지정하십시오
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 key로, {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 Reference는 다음을 참조하십시오.
언어에 따라 사용자 사전을 지원하지 않을 수 있습니다. 자세한 내용은 AmiVoice API 지원되는 언어를 참조하십시오.
AmiVoice Tech Blog에서도 사용자 사전에 대한 다양한 팁을 소개하고 있습니다.
- 음성 인식되지 않는 단어는 단어 등록! AmiVoice의 단어 등록 요령 (일본어 블로그)
- AmiVoice API의 단어 등록 기능에서 선택 가능한 "클래스" 해설(범용 엔진) (일본어 블로그)
- 【중급자용】AmiVoice의 단어 읽기 자동 변환에 대하여 (일본어 블로그)
- AmiVoice 단어 등록 API로 음성 인식을 보다 자유롭게! (일본어 블로그)
- AmiVoice API 업데이트 해설 End-to-End 대응의 「단어 강조」기능 (일본어 블로그)