Hrp.html
Hrp.jsのサンプルプログラム (hrp.html)はブラウザ上で動作するアプリケーションです。
hrp.htmlファイルをダブルクリックして直接ブラウザで開いた場合は動作しません。このファイルをWebサーバーに配置してhttps://、または、http://localhost/から開いてください。
hrp.htmlファイルをダブルクリックして直接ブラウザで開いても動作しないのは、バージョン1.1.9以降のサンプルプログラムでは、音声処理にWeb Audio APIのAudioWorkletを使っており、ファイルを直接file://として開いた場合はこのAPIが動作しないため です。ファイルを直接開いて動作させたい場合は、DEPRECATEDフォルダにあるhrp.htmlを利用してください。ただし、このフォルダにあるファイルは、非推奨になったAPIのScriptProcessorNodeを使用しており、今後使用できなくなる可能性があります。また、今後ScriptProcessorNodeを使用したサンプルプログラムは更新されません。
- 実行にはマイページに表示されている自分の
APPKEYもしくはサービスIDとサービスパスワードを設定する必要があります
- 利用した音声認識に応じて利用料金が発生しますのでご注意ください
準備
ここではPython3がインストールされている環境でサンプルプログラムを動作させる手順を説明します。
- サンプルプログラムをダウンロードし、ローカルマシンの任意のディレクトリに解凍します。
- 解凍したディレクトリをターミナルで開きます
- 以下のコマンドを実行し、HTTPサーバを起動させます。
python3 -m http.server --bind localhost 8081
- ブラウザで以下にアクセスし、サンプルプログラムを開きます。
http://localhost:8081/Hrp/javascript/hrp.html
以下の実行例のような画面が表示されるはずです。
実行例
- ブラウザでアクセス すると以下のように表示されます。

- [サービス ID]に、マイページの[サービス ID]を入力します。
- [サービスパスワード]に、マイページの[サービスパスワード]を入力します。
- [サービス認証キーの取得]ボタンをクリックします。
- [APPKEY]にワンタイム APPKEY が入力されたことを確認します。もしくは、2~4をせずにマイページに表示されている自分の
APPKEYを直接入力します。 - [録音開始]ボタンをクリックします。
- マイクの使用許可ダイアログで[許可]をクリックします。
- 日本語を自由に発話します。
- ページの下半分に、認識結果テキストと、サーバから送られてくるイベントが次々と表示されます。
エンコーダーの設定
バージョン 1.1.12 以降では、音声データを圧縮するエンコーダーを利用できます。エンコーダーは3種類あり、どれを使うかによって圧縮の仕方が異なります。それぞれの違いと使い方を以下に説明します。
エンコーダーの種類と圧縮形式
Hrp.jsでは、以下の3 種類のエンコーダーが利用できます。
encoder_opus.jsencoder_opus_ogg.jsencoder_adpcm.js
これらを使う組み合わせにより、音声データの形式や圧縮率、エンコーディングの CPU 負荷などは以下のようになります。
| エンコーダー | コーデック | コンテナ形式 | ビットレート | 圧縮率 | CPU 負荷 |
|---|---|---|---|---|---|
| 1 のみ | Opus | 独自形式 | 24 kbps | 約 9.4 % | 高め |
| 1 & 2 | Opus | Ogg 形式 | 24 kbps | 約 9.4 % | 高め |
| 3 のみ | ADPCM | 独自形式 | 64 kbps | 25 % | 非常に低い |
エンコーダーをいずれも使わない場合は、音声データは圧縮されません。また、上記のいずれの場合も、非圧縮の場合と認識精度にほとんど違いはありません。処理を行う端末のスペックが満足に無い場合や CPU の余裕が足りない場合は 3 のみを使用した ADPCM を、そうでなければ 1 のみを利用した Opus を推奨します。
なお、Opus については、recorder.jsの以下の箇所を書き換えることで圧縮率を変更できます。デフォルトで 24kbps です。極端に圧縮すると認識精度も下がる可能性があるので注意してください。
if (!encoder_ && recorder_.opusPacking && window.Encoder && window.Encoder.createOpusEncoder) {
encoder_ = window.Encoder.createOpusEncoder(audioSamplesPerSec_, /* bitsPerSec */ 24000, /* vbr: VBR */ 1, /* application: AUDIO */ 1, /* complexity */ 10);
}
エンコーダーの使い方
hrp.htmlファイルのheadに、以下の記述があります。
<script type="text/javascript" src="encoder_adpcm.js"></script>
<script type="text/javascript" src="encoder_opus.js"></script>
<script type="text/javascript" src="encoder_opus_ogg.js"></script>
利用するエンコーダーに応じて、この部分から必要なものを残し、不要な部分は削除してください。エンコーダーを利用しない場合は、全て削除してください。
なお、デフォルトのように3種類とも記載されている場合は、encoder_opus.jsとencoder_opus_ogg.jsを利用することになります。不要なコードが残っているとわずかながら読み込み時間が余計にかかってしまうので、encoder_opus.jsとencoder_opus_ogg.jsを利用する場合でもencoder_adpcm.jsの記述は削除することを推奨します。
AmiVoice Tech Blogで、圧縮率による音声認識の精度の変化について検証していますので、参考にしてください。