AmiVoice APIは、株式会社アドバンスト・メディアが提供するクラウド型の音声認識Web APIです。料金は録音の長さではなく発話区間だけに1秒単位でかかり、汎用エンジンなら1時間79.2円(税込)から、全エンジンを毎月60分まで無料で試せます。2026年は、非同期HTTPの旧版v1の停止予定(2026年12月25日目処)、感情分析のv2対応、End to Endエンジンの新世代化と変更が続きました。この記事では、公式ドキュメントと料金ページを2026年10月22日に確認した内容をもとに、料金の試算、Pythonでの呼び出し方、実装でつまずく点、他社APIとの使い分けまでを整理します。
まとめ:AmiVoice APIの要点(2026年10月時点)
- 料金:発話区間のみ・1秒単位の従量制。汎用は非同期HTTP+ログ保存ありで79.2円/時間、同期HTTP・WebSocket+ログ保存なしで148.5円/時間。エンジンごとに毎月60分無料、税抜合計50円未満は請求なし。
- インタフェース:短い音声は同期HTTP(16MiBまで)、長い録音は非同期HTTP(約2GiBまで)、リアルタイムはWebSocket。
- 期限のある作業:非同期HTTPのv1は2026年12月25日目処で停止予定。エンドポイントを
/v2/recognitionsに変えるだけで移行できるが、感情分析の値はv1とv2で一致しない。 - 精度:日本語の汎用に加え、医療・金融・保険の専用エンジンがある。ただし専用エンジンは16kHzのみで、8kHzの電話音声には使えない。
- 話者分離と感情分析:話者ダイアライゼーションは3つのインタフェースすべてで使える(最大20人)。感情分析は非同期HTTP専用のオプションで158.4円/時間。
- データの扱い:処理と保管はAWSの国内データセンター。非同期HTTPは既定で「ログ保存あり」なので、学習利用を避けるなら
loggingOptOut=Trueを付ける。
AmiVoice APIとは|3つのインタフェースとエンジンの選び方
AmiVoice APIは、音声データを送るとテキストを返すWeb APIです。公式は文章や回答を自律的に創作する生成AIとは区別していますが、聞き取りや変換の誤りは起こり得ます(公式のサービス仕様)。呼び出し方は3種類あり、どれを使うかで送れる音声の大きさと料金が変わります。
同期HTTP・非同期HTTP・WebSocketの使い分け
判断の軸は「音声ファイルの大きさ」と「途中結果が要るか」の2つです。上限値は公式の制限事項から抜き出しました。
| インタフェース | 向く用途 | 主な上限 |
|---|---|---|
| 同期HTTP | 短い録音・音声メモ | 1リクエスト16,777,215バイト |
| 非同期HTTP | 会議・通話録音の一括処理 | 約2GiB(話者分離ありは3時間) |
| WebSocket | 字幕・応対支援などリアルタイム | 接続24時間・無発話600秒で切断 |
同期HTTPとWebSocketでは、1つの発話区間は最大15秒で区切られます。WebSocketでは、長く話し続けても15秒で区切った確定結果が返るため、字幕はこの単位で更新できます。同期HTTPは音声全体の結果をまとめて返すので、字幕のような逐次表示には使えません。
End to End型とハイブリッド型のエンジン
エンジンは2世代あり、接続エンジン名で指定します。新しいEnd to End型は日本語なら -a2-ja-general(リアルタイム用)と -a2b-ja-general(バッチ用)で、非同期HTTPではバッチ用を指定するよう公式のエンジン一覧に書かれています。2026年9月30日の更新で新世代に入れ替わり、社内テストの平均エラー改善率は旧世代比でリアルタイム版16kHzが約9.7%、バッチ版16kHzが約8.6%と公表されています。
従来のハイブリッド型は、会話_汎用 -a-general のほか、医療 -a-medical・金融 -a-bizfinance・保険 -a-bizinsurance の専用エンジンを持ちます。注意したいのは、この3つの専用エンジンが16kHzのみ対応である点です。コールセンターの8kHz通話を医療・金融の専用エンジンにかける設計は成り立たず、8kHzなら汎用(-a-general か End to End)を使うことになります。
AmiVoice APIの料金|発話区間だけに1秒単位でかかる従量制
料金ページの説明では、課金対象は音声から検出した「発話区間」だけで、無音区間には料金がかかりません(AmiVoice API 価格)。ただしBGMやテレビ音声、隣席の話し声は発話区間として検出されることがあり、フィラーやノイズと判定されて結果から除かれた区間も請求対象です。雑音の多い現場では、発話率が想定より高めに出る前提で見積もってください。
エンジン・インタフェース・ログ保存別の単価
| カテゴリー | インタフェース | ログ保存あり | ログ保存なし |
|---|---|---|---|
| 汎用 | 非同期HTTP | 79.2円/時間 | 99円/時間 |
| 汎用 | 同期HTTP・WebSocket | 99円/時間 | 148.5円/時間 |
| 医療 | 全インタフェース | 148.5円/時間 | 222.75円/時間 |
| 金融・保険・多言語 | 全インタフェース | 118.8円/時間 | 148.5円/時間 |
| 感情分析(追加) | 非同期HTTP | 158.4円/時間 | |
いずれも税込で、2026年10月22日時点の料金ページの値です。「汎用」には会話_汎用、英語・中国語・韓国語の汎用、日本語・中国語のEnd to End(バッチ版を含む)が入ります。End to Endの日本語エンジンは汎用料金で使えるため、専用エンジンが要らない用途ではまずEnd to Endを試すのが費用面でも妥当です。
月額の試算|無料3,600秒・50円未満・端数の規則
料金ページの「料金計算について」には、エンジンごとに使用量から無料枠3,600秒を引き、税抜単価を掛けて1円未満を四捨五入し、合計(税抜)が50円未満なら請求しない、という手順が書かれています。この規則をそのままPythonに写して、典型的な使い方を計算しました。
| 想定 | 課金対象 | 請求額(税込) |
|---|---|---|
| 通話録音 月200時間・発話6割 | 汎用 非同期 ログなし 120時間 | 11,781円 |
| 同上をログ保存ありで | 汎用 非同期 ログあり 120時間 | 9,424円 |
| 同上に感情分析を追加 | 汎用 ログなし+感情分析 各120時間 | 30,630円 |
| 診療音声のリアルタイム入力 | 医療 ログなし 50時間 | 10,915円 |
| 検証のみ | 汎用55分+医療50分 | 0円 |
| 無料枠を1分だけ超過 | 汎用 同期 ログなし 61分 | 0円(税抜2円で50円未満) |
通話録音の例で費用を大きく動かすのは、ログ保存の有無より感情分析です。感情分析を足すと月額は約2.6倍になるため、全件にかけず、クレーム化した通話だけを後から解析する運用のほうが費用を抑えられます。なお感情分析の課金時間は、上の表では音声認識と同じ120時間として計算しています。
ログ保存あり/なしで変わるデータの扱い
「ログ保存あり」は、音声と認識結果を同社の研究開発・品質向上に提供する代わりに単価が下がる選択です。サービス仕様によると、学習に使われなかったデータは最大3年間保持され、学習に使われたデータは原則として削除されません。「ログ保存なし」では学習に使われず、同期HTTP・WebSocketはメモリ上で処理して即時破棄、非同期HTTPは暗号化ディスクに一時保存して処理後に削除し、認識結果のテキストだけを7日間保持します。
見落としやすいのが非同期HTTPの既定値です。同期HTTP・WebSocketはエンドポイント(/v1/nolog/)でログ保存なしを選びますが、非同期HTTPは既定がログ保存ありで、d に loggingOptOut=True を付けないと保存されます(ログ保存)。個人情報を含む通話を扱うなら、ここは割引より優先してください。
AmiVoice APIの使い方|APIキー取得からPythonで文字起こしまで
利用開始には、無料枠内だけの利用でもクレジットカード払いまたは請求書払いの事前設定が必要です。アカウント作成後、マイページの[接続情報]でAPIキーを確認します。2026年7月28日以降、2025年6月30日のマイページリニューアル後に作ったアカウントではサービスIDとサービスパスワードが非表示になりました。サービスIDでワンタイムキーを発行する2024年以前の解説記事の手順は、新しいアカウントではそのまま使えません。
curlによる同期HTTPの初回リクエスト
APIキーは環境変数に置き、Authorization ヘッダで送ります。URLのクエリ文字列に入れると通信経路のログに残るため、公式も避けるよう求めています。
export AMIVOICE_API_KEY=取得したAPIキー
curl https://acp-api.amivoice.com/v1/nolog/recognize \
-H "Authorization: Bearer $AMIVOICE_API_KEY" \
-F d=-a2-ja-general \
-F [email protected]
ログ保存なしのエンドポイントに、日本語End to Endのリアルタイム用エンジンで送る例です。音声の -F [email protected] は必ず最後に置きます。
Pythonで同期HTTPと非同期HTTP v2を呼ぶコード
次のコードは、同期HTTPで短い音声を、非同期HTTP v2で長い録音を文字起こしします。依存は requests だけです。
import os
import time
from urllib.parse import quote
import requests
API_KEY = os.environ["AMIVOICE_API_KEY"] # キーはコードやURLに書かない
SYNC_URL = "https://acp-api.amivoice.com/v1/nolog/recognize"
ASYNC_URL = "https://acp-api-async.amivoice.com/v2/recognitions"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
def build_d(engine, **params):
# d は「キー=値」を半角スペースで区切る。値はURLエンコードする
items = [f"grammarFileNames={quote(engine)}"]
items += [f"{k}={quote(str(v))}" for k, v in params.items()]
return " ".join(items)
def recognize_sync(path, engine="-a2-ja-general", **params):
with open(path, "rb") as f:
files = [
("d", (None, build_d(engine, **params))),
("a", (os.path.basename(path), f, "application/octet-stream")), # 音声は最後
]
r = requests.post(SYNC_URL, headers=HEADERS, files=files, timeout=120)
r.raise_for_status()
body = r.json()
if body.get("code"): # 認識に失敗しても HTTP 200 が返る
raise RuntimeError(f"code={body['code']} message={body['message']}")
return body["text"]
def recognize_async(path, engine="-a2b-ja-general", interval=10, **params):
params.setdefault("loggingOptOut", "True") # 非同期HTTPは既定がログ保存あり
with open(path, "rb") as f:
files = [
("d", (None, build_d(engine, **params))),
("a", (os.path.basename(path), f, "application/octet-stream")),
]
r = requests.post(ASYNC_URL, headers=HEADERS, files=files, timeout=300)
r.raise_for_status()
job = r.json()
if "sessionid" not in job: # 発話が無い音声は v2 では登録時点で失敗する
raise RuntimeError(f"code={job.get('code')} message={job.get('message')}")
max_wait = 3600 # サンプルの待機上限(秒)。運用に合わせて変更
deadline = time.monotonic() + max_wait
while True:
if time.monotonic() >= deadline:
raise TimeoutError(f"ジョブ待機上限超過: {job['sessionid']}")
time.sleep(interval)
s = requests.get(f"{ASYNC_URL}/{job['sessionid']}", headers=HEADERS, timeout=60)
s.raise_for_status()
s = s.json()
if s["status"] == "completed":
return s
if s["status"] == "error":
raise RuntimeError(s.get("error_message"))
print(recognize_sync("memo.wav", profileWords="www とりぷるだぶる"))
print(recognize_async("meeting.wav", speakerDiarization="True")["text"])
このコードは実際のAPIではなく、公式ドキュメントに載っているレスポンス例を返すローカルのモックサーバーに対して実行し、送信内容を記録して確かめました(Python 3.9.6・requests 2.32.5)。マルチパートの順序は d→a、APIキーはヘッダのみでURLには出ず、非同期のポーリングは queued→started→processing→completed の順に進んで結果を返しました。不正なキーを模した応答(HTTP 200・code が -)では、例外として止まることも確認しています。
HTTP実装のエラー判定・パラメータ書式・送信制限
公式の生成AIを利用した開発のページは、生成AIに書かせたコードが誤りやすい点を列挙しています。手で書く場合も同じところで失敗します。
- HTTP 200でも失敗している:同期HTTPは認識に失敗しても200を返し、成功時だけ
codeが空文字になります。ステータスだけで判定すると、空のテキストを成功として保存してしまいます。 - dの書式:複数のパラメータを渡すときは
grammarFileNames=を付け、値をURLエンコードします。公式の例にあるprofileWordsのエンコード済み文字列は、デコードすると「とりぷろだぶる」になります(表記例の「とりぷるだぶる」と1文字違う)。例をコピーせず、quote()で生成するほうが安全です。 - 音声は最後のパート:
dを音声より後に送ると、エンジンが見つからないエラーになります。 - 同期HTTPに長い録音を送る:16MiBを超えるファイルは非同期HTTPへ回します。16kHz・16bit・モノラルのWAVなら約8分44秒で16MiBに達します。
Codex・Claude Codeなどに実装を任せるなら、公式の llms.txt を起点に渡すと、Markdown版の公式ドキュメントを参照させられます。ページURLの末尾に .md を付けるとMarkdown版が取れます。
公式クライアントライブラリとサンプル
GitHubの advanced-media-inc/amivoice-api-client-library が公式ライブラリで、2026年3月2日公開の1.1.12が最新です。同期HTTP用のHrp/Hrp.jsとWebSocket用のWrp/Wrp.jsがあり、Java・C#・C++・PHP・Python・JavaScriptで使えます。ただしクライアントライブラリのページにあるとおり、非同期HTTPには対応していません。長い録音のバッチ処理は、上のコードのようにHTTPで直接呼ぶ形になります。
非同期HTTP v1の停止予定(2026年12月25日目処)とv2への移行
非同期HTTPのv2は2025年7月15日に公開され、旧版v1は2026年12月25日を目処に停止予定です(当初の2026年7月31日から延期。非同期HTTPインタフェース)。v1を使い続けているシステムは、年内に次の3点を確認してください。
- エンドポイントの差し替え:
/v1/recognitionsを/v2/recognitionsに変えるだけで、パラメータは共通です。認識精度は変わらないと公式は説明しています。 - エラー処理:発話区間が無い音声は、v1ではジョブ登録が成功して結果なしを返していましたが、v2では登録の時点で失敗します。サポート外の音声形式などのエラー応答には
textとutteranceidが加わります。 - 感情分析のしきい値:感情分析は2026年8月12日にv2でも使えるようになりましたが、エンジンの版が違うため、同じ音声でもv1とv2で値が一致しません。しきい値で判定している場合は、移行前に両方で同じ音声を処理して比べるよう公式の感情分析ページが求めています。
処理時間の差は大きく、v1が音声長の約0.3〜1倍かかるのに対し、v2は分割して並列処理するため、90分程度までの音声なら音声認識処理はほぼ一定時間(例:90分の音声で約5〜6分)が目安です。ただし、混雑による待ち時間や話者ダイアライゼーションの追加処理時間は別途考慮します。短い音声では速くならないか、わずかに遅くなることもあるとされています。
AmiVoice APIの認識精度と評判|公表値の読み方と自社音声での測り方
AmiVoice APIの単語誤り率(WER)や文字誤り率(CER)の公式な保証値はありません。参考になる公表値は、同社テックブログの会議音声でのWhisperとの比較で、4業種・計約40分の会議音声に対して、会話_汎用相当が文字単位で96.68%、Whisper largeが88.29%、large-v2が88.80%でした。ただし、ベンダー自身の計測で、Whisperは2022〜2023年時点の版、音声は「人間にも聞き取りやすい」比較的易しい条件と明記されています。現行のWhisper large-v3やほかの商用APIとの差を示す数字ではありません。
第三者の評判では、ITreviewの「AmiVoice Cloud Platform」は満足度4.3・レビュー6件(2026年10月21日時点の集計)です。件数が少ないため、採否の根拠には向きません。精度は自社の音声で測るのが確実です。毎月60分の無料枠で、本番と同じ収録条件(8kHzの通話か16kHzの収録か、マイクの距離、雑音)の音声を10〜20分ほど用意し、人手の書き起こしを正解として、CER=(置換・削除・挿入の誤り文字数の合計)÷正解文字数で比較します。句読点や数字の表記を評価対象に含めるかも、比較前に統一してください。8kHzの通話と16kHzの収録では使えるエンジンが違うため、比較はサンプリングレートごとに分けます。
ユーザー辞書による固有名詞の登録・強調
製品名や社内用語の誤認識は、ユーザー辞書で減らせます。ハイブリッド型では「単語登録」、End to End型では「単語強調」と呼び、End to Endの強調度は0〜1(省略時0.5)で指定します。リクエストごとに profileWords で渡すこともでき、2026年9月30日からは1回のリクエストで最大5つのプロファイルを同時に使えます。ハイブリッド型は8kHz用と16kHz用でプロファイルが別なので、API経由で登録するときは両方に入れ忘れないようにします。
AmiVoice APIの対応言語|日英中韓と多言語エンジン
音声認識は日本語・英語・中国語・韓国語の4言語に対応します(対応している言語)。End to End型は日本語と中国語、多言語エンジン -a2-multi-general は日本語・英語・中国語が混ざった発話をそれぞれの言語の文字で書き起こします。多言語エンジンでは単語ごとに言語ラベル(results[0].tokens[].language)が付きます。なお、英語エンジンはユーザー辞書に対応していません。英語の製品名を多く含む音声では、事前に無料枠で誤認識の傾向を確かめてください。
話者ダイアライゼーションと感情分析の対応範囲・利用条件
話者ダイアライゼーション(全インタフェース・最大20人)
1本の録音に複数人の声が入っている場合、話者ダイアライゼーションで単語ごとに speaker0・speaker1 のラベルを付けられます。非同期HTTPは speakerDiarization=True(人数の目安は diarizationMinSpeaker・diarizationMaxSpeaker)、同期HTTPとWebSocketは segmenterProperties=useDiarizer=1 で有効にします(話者ダイアライゼーション)。区別できるのは最大20人で、ラベルはリクエストごとに独立しています。会議を前半・後半に分けて送ると同じ人に別のラベルが付きうるため、話者を通しで追いたいなら1リクエストで送ってください。話者分離に特化したOpenAIのモデルとの違いはgpt-4o-transcribe-diarizeの解説で扱っています。
感情分析オプション(ESAS・非同期HTTP専用)
感情分析は、ESジャパン社の感情解析エンジンESAS(イスラエルNemesysco社のLVA7を日本向けに調整したもの)を使い、言葉の内容ではなく声の特徴から推定します。非同期HTTPで sentimentAnalysis=True を指定すると、発話と判定した区間について約2秒に1回、エネルギー・ストレス・集中・自信・攻撃性憤り・不満など20個のパラメータが返ります。リアルタイムのWebSocketでは使えないため、通話中にオペレーターへ警告を出す用途には合いません。終話後に一覧で傾向を見る使い方が前提です。テキストから感情を判定する方式との違いは感情分析の仕組みと導入判断の解説で整理しています。
AmiVoice APIのセキュリティと国内運用
音声認識の処理とデータの保管はAWSの日本国内のデータセンターで行われ、国外のサーバへ転送・処理・保管されないとサービス仕様に明記されています。ISO/IEC 27001(認証番号IS 816102)とプライバシーマークも取得済みです。
2026年8月18日からは、AWS PrivateLink経由でインターネットを通らずに接続できるようになりました。料金は税込で初期費用132,000円、月間基本費用55,000円、時間費用が音声認識API利用料の5%で、事前の申し込みが要ります。PrivateLinkは同期APIと非同期APIで別のオプションで、両方を使う場合は初期費用・月間基本費用・時間費用がそれぞれにかかります(同一企業の2環境同時構築などは相談可)。固定費が大きいため、閉域接続が規程で必須の組織向けです。APIキー側でも、発行時に有効期限と接続元IPアドレスの制限を付けられるので、ブラウザから直接呼ぶ構成では制限付きのキーを使います。
クラウドへの音声送信そのものが認められない環境では、お客様専用に構築するオンプレミス・専用環境の「AmiVoice API Private」や、オフラインで動く「AmiVoice SDK」を検討します。
他の音声認識APIとの違い|AmiVoiceを選ぶ条件・選ばない条件
主な音声認識APIの単価は、2026年10月に各記事で確認した値で次のとおりです。通貨も課金の数え方も違うため、正確な比較は自社の音声量で試算してください。
| サービス | 単価の目安 | 詳細 |
|---|---|---|
| AmiVoice API | 79.2〜222.75円/時間(税込) | この記事 |
| Google Cloud Speech-to-Text V2 | $0.016/分(標準) | 料金と無料枠 |
| Azure AI Speech | リアルタイム$1.00/時間・バッチ$0.18/時間(東日本・S1) | 料金と円建て額 |
| AssemblyAI Universal-3.5 Pro | $0.21/時間 | 日本語対応と料金 |
AmiVoice APIを選ぶべきなのは、①医療・金融・保険の専門用語を16kHzの収録音声で書き起こす、②音声データを国内から出せない、③無音や保留の多い通話で発話区間のみの課金が効く、のいずれかに当てはまる場合です。逆に、英語が中心の音声、8kHzの通話に業界用語の精度を求める案件、通話中にリアルタイムで感情を出したい案件では、AmiVoiceの強みが活きません。要約や議事録の整形はAPIに含まれないため、別途LLMにつなぐ設計が要ります。主要7サービスを横並びで比べたい場合は文字起こしAPIの比較と選び方、自前のGPUで動かす選択肢はWhisperをPyTorchで動かす手順が参考になります。
AmiVoice APIの主な導入シーン
医療では音声入力_医療 -a-medical-input で電子カルテへ入力し、コールセンターでは通話録音を非同期HTTPで文字化して、話者ダイアライゼーションで顧客とオペレーターを分けます(全体像はコールセンターAIの適用領域)。仕組みや精度の考え方から押さえたい場合は音声認識の仕組みと業務導入の判断基準が入口です。業務システムへの組み込みやエンジン選定から任せたい場合は、一創のAI音声認識システムの受託開発でご相談を受け付けています。
よくある質問
AmiVoiceとは何ですか?
株式会社アドバンスト・メディアの音声認識技術のブランドです。開発者向けには、クラウドのAmiVoice API、オンプレミス・専用環境のAmiVoice API Private、オフラインで動くAmiVoice SDKがあります。
AmiVoice APIの料金はいくらですか?無料で使えますか?
発話区間のみ1秒単位の従量制で、汎用エンジンは79.2〜148.5円/時間(税込)、医療は148.5〜222.75円/時間です。全エンジンが毎月60分無料で、税抜合計50円未満の月は請求されません。
感情分析はリアルタイムで使えますか?
使えません。感情分析は非同期HTTP専用のオプションで、v1とv2の両方に対応しています(v2は2026年8月12日から)。料金は158.4円/時間(税込)で、毎月60分の無料枠があります。
対応言語は何ですか?
日本語・英語・中国語・韓国語の4言語です。多言語エンジンは日本語・英語・中国語の混在を1つのエンジンで認識します。ユーザー辞書は英語エンジンでは使えません。
PythonやSDKで使えますか?
使えます。公式クライアントライブラリ(Hrp・Wrp)がPythonを含む6言語に対応していますが、非同期HTTPには対応していないため、長い録音は requests などでHTTPを直接呼びます。端末内で動かす場合はオフライン対応のAmiVoice SDKを使います。