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的示例程序将不会更新。
- 运行时需要设置在 MyPage 上显示的自己的
APPKEY或Service ID和Service Password
- 请注意,根据使用的语音识别会产生相应的使用费用
准备
这里说明在已安装Python3的环境中运行示例程序的步骤。
- 下载示例程序,并解压到本地机器的任意目录中。
- 在终端中打开解压后的目录
- 执行以下命令启动HTTP服务器:
python3 -m http.server --bind localhost 8081
- 在浏览器中访问以下地址,打开示例程序:
http://localhost:8081/Hrp/javascript/hrp.html
应该会显示如下执行示例中的画面。
执行示例
- 在浏览器中访问时,会显示如下画面:

- 在[サービス ID]中输入 MyPage 上的[Service ID]。
- 在[サービスパスワード]中输入 MyPage 上的[Service Password]。
- 点击[サービス認証キーの取得]按钮。
- 确认[APPKEY]中已输入一次性 APPKEY。或者,不执行步骤2~4,直 接输入 MyPage 上显示的自己的
APPKEY。 - 点击[音声データの送信]按钮。
- 在麦克风使用许可对话框中点击[Allow]。
- 自由说出日语。
- 在页面下半部分,将依次显示识别结果文本和服务器发送的事件。
编码器设置
从版本 1.1.12 开始,可以使用压缩音频数据的编码器。有三种编码器,根据使用的编码器,压缩方式会有所不同。以下解释各编码器的区别和使用方法。
编码器类型和压缩格式
Hrp.js 可以使用以下三种编码器。
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>
根据要使用的编码器,保留此部分中的必要内容,删除不需要的部分。如果不使用编码器,请全部删除。
请注意,如果像默认情况那样列出了三种类型,将会使用 encoder_opus.js 和 encoder_opus_ogg.js。保留不必要的代码会稍微增加加载时间,因此即使使用 encoder_opus.js 和 encoder_opus_ogg.js,我们也建议删除 encoder_adpcm.js 的描述。
AmiVoice Tech Blog 验证了压缩率对语音识别精度的影响,供参考。
[We Tested It!] How does speech recognition accuracy change with sampling rate and compression rate?