トラブルシューティング
一般的な質問
Q. 音声認識精度が思うように出ないのですがどうしたらいいですか?
以下のポイントをチェックしてください。結果の取り扱いのクライアントエラーも参照してください。改善しない場合はお問合せください。
-
音声データのチャネル数を確認
ステレオ録音の場合、1チャネル目の音声しか認識しません。両チャネルの音声を認識させたい場合は分離した音声ファイルごとに送信してください。
-
音声データのサンプリングレートを確認
通話音声の場合は主に8kHzで録音されることになり、それ以外で広く使われている音声は16kHz以上になります。 会話_汎用エンジンについてはそれぞれのサンプリングレートに対応していますが、接続先のエンジンが異なるため、リクエスト時に正しいサンプリングレートを記述する必要があります。 ※サンプリングレートの指定が間違っていると、ほぼ認識されません(認識結果が空になります)。
-
音声フォーマット指定のエンディアンを確認
ヘッダなしの音声データ(RAWデータ)を送信する場合は、サンプリングレートに加えて、エンディアンを指定する必要があります。リトルエンディアンのデータはlsb、ビッグエンディアンのデータはmsbをつけます(
lsb8K
、msb16K
など)。※lsbやmsbの指定が間違って逆になっていると、ほぼ認識されません(認識結果が空になります)。
-
認識対象の音声が録音されているかを確認
周りの環境や、録音を行うマイクデバイスなどに影響を受けるので、発話者の音声が しっかりと聞き取れるレベルで録音されているかを聴いて確認してください。
-
発話内容が利用するエンジンと合致しているかを確認
専門用語が頻繁に話されるような音声は認識精度が下がります。 医療、金融、保険業界向けの領域特化エンジンをご用意しています。発話内容が合致しそうな場合はそちらをお試しください。詳細は音声認識エンジンを参照してください。 社内のみで使用される独自の用語や略称などを認識させたい場合は、単語登録機能をご活用ください。
Q. 動画ファイル、HLSなどのストリーミング形式の動画・音声の音声認識はできませんか?
ストリーミング配信の動画や音声を音声認識するためのAPIやサンプルプログラムは提供していません。 非対応のデータフォーマットの場合、対応している音声フォーマットに変換していただく必要があります。
音声フォーマットを変換するソフトウェアには、フリーソフトウェアのFFmpegなどがあります。 ただし、動画・音声フォーマットによっては、フォーマット自体にライセンスで使用法の制限やロイヤリティの発生有無などがある場合があります。 お客様の責任でご確認、ご利用いただきますようお願いします。
動画や音声を再生しながら音声認識を行いたい場合は、JavaScriptのサンプルプログラムのgetUserMedia()
をgetDisplayMedia()
に変更することでマイクの入力音のかわりにブラウザやシステムの音を認識することができますので、こちらもご検討ください。
(例) wrp.js
変更前
navigator.mediaDevices.getUserMedia(
{audio: true, video: false}
変更後
navigator.mediaDevices.getDisplayMedia(
{audio: true, video: true}
※ getDisplayMedia()
のaudioは、すべてのブラウザがサポートしているわけではありません。ChromeとEdgeで動作することを確認しています。
マイページに関する質問
Q. クライアントアプリケーションごとの利用量を知ることはできませんか?
クライアントアプリケーションごとの利用量を知るには、クライアントアプリケーションごとにアカウントを分ける必要があります。 アカウントを分ける必要がある場合、「サービス提供者向け顧客管理機能」のご利用もご検討ください。
「サービス提供者向け顧客管理機能」を検討される場合、詳細についてはお問い合わせフォームからお問い合わせください。
Q. 単語登録ページでファイルから単語を登録したのにページに表示されない理由は何ですか?
ファイルの文字コードがUTF-8でない、もしくはファイルの書式が正しくないため、登録できていない可能性があります。 ファイルの文字コードと書式を確認してください。
クライアントライブラリに関する質問
Q. 音声認識サーバーに接続中に、インターネットが切断して回復した後は、どのように再開処理をすればよいですか?
新規にsocketを作成されても問題ありませんが、終了処理を行い、再接続を行うことをお勧めします。
クライアントライブラリの場合、wrp.disconnect()
後、改めてwrp.connect()
から始めることで再接続できます。
(例)
wrp.construct();
wrp.connect();
wrp.feedDataResume();
wrp.feedData();
wrp.feedData();
wrp.feedData();
--> エラー発生
wrp.disconnect();
wrp.connect();
wrp.feedDataResume();
wrp.feedData();
wrp.feedData();
wrp.feedData();
wrp.feedDataPuse();
Q. Androidアプリケーションでサーバーの接続に失敗する理由は何ですか?
Androidでは、メインスレッド(UIスレッド)からサーバーに接続することができません。 別のスレッドで行ってください。 また、ネットワークオペレーションを行うための権限設定(android.permission.INTERNET)が必要になります。
サンプルプログラムに関する質問
Q. 非同期インタフェースのサンプルプログラムはありませんか?
Pythonのサンプルコードは非同期 HTTP インタフェースを確認してください。 また、AmiVoice Tech Blogでサンプルアプリケーションをソースコード付きで公開していますので、こちらを参考にしてください。
Q. Windowsのバッチファイルでcurlコマンドを実行すると、パラメーターが 有効にならない理由は何ですか?
Windowsのバッチファイルにコマンドを記述して実行する場合、「%20」は「%%20」のようにエスケープする必要があります。 コマンドの内容を確認してください。
Q. Windowsのコマンドプロンプトで一部の文字が文字化けする理由は何ですか?
Windowsのコマンドプロンプトは、UTF-8の4バイト文字の表示に対応していないため、文字化けします。
Q. PHPで「PHP Warning: PHP Startup: Unable to load dynamic library 'openssl' 」が出ますが、openssl.soは必ず必要ですか?
opensslが組み込みでコンパイルされているPHPの場合は不要です。