故障排除
常见问题
Q. 语音识别准确度不如预期,我该怎么办?
请检查以下几点。另请参阅结果处理中的客户端错误。如果问题仍然存在,请与我们联系。
-
检查音频数据的声道数
对于立体声录音,只会识别第一个声道的音频。如果想要识别两个声道的音频,请分别发送分离后的音频文件。
-
检查音频数据的采样率
电话通话音频通常以8kHz采样,其他常用音频通常以16kHz或更高采样率录制。 会話_汎用引擎支持这些不同的采样率,但由于连接到不同的引擎,在请求时需要指定正确的采样率。 ※如果采样率指定错误,几乎无法识别(识别结果为空)。
-
检查音频格式指定的字节序
发送 不带 header 音频数据(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()
的音频。我们已确认它在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,不需要。
关于服务器连接的问题
Q. APPKEY认证失败的原因是什么?
请检查指定的参数和信用卡 注册状态。 另外,签约后,AmiVoice API可能需要大约10分钟才能使用。
Q. 连接时出现SSL证书错误的原因是什么?
我们收到使用Zscaler(一种第三方安全解决方案)环境的客户反馈,需要指定Zscaler的证书。
Q. 由于超时导致连接失败的原因是什么?
可能是由于防火墙或代理服务器等网络设置导致被阻止。 请检查防火墙和代理服务器的设置。
由于Web浏览器可能已配置网络设置,请尝试使用JavaScript版本的示例。
如果您在需要代理服务器设置的环境中使用AmiVoice API客户端库,请使用setProxyServerName()
方法设置代理服务器。
- Hrp类 void setProxyServerName(String proxyServerName)
- Wrp类 void setProxyServerName(String proxyServerName)
Q. 返回HTTP状态431或414的原因是什么?
请求的 header、URI或查询字符串太长。 如果在查询字符串中指定了profileWords,请改为在请求主体中指定。
关于语音识别结果和Job状态的问题
Q. 在单词注册页面注册的单词没有生效的原因是什么?
需要在请求参数中指定配置ID参数。 请注意,"profileId"和"profileWords"不是独立的请求参数,而是d参数的"子参数"。 详情请参阅个人页面的单词注册。
Q. 自己准备的音频文件无法进行语音识别的原因是什么?
可能使用了AmiVoice API不支持的音频格式,或音频文件的格式与参数中指定的格式不匹配。 请确认使用的是AmiVoice API支持的音频格式,并且参数指定正确。 另外,也有可能是将音频文件名而不是音频文件数据发送到服务器的情况,请注意。 关于音频格式,请参阅音频格式。
Q. 在单词注册中,如果想使用包含半角"|"或半角":"等不能使用的字符的单词,应该怎么办?
需要将其替换为其他字符串进行注册,然后在获取语音识别结果后的处理中将其替换回原始字符。 例如,可以注册URL编码后的字符,然后在应用程序中对语音识别结果的字符串进行URL解码。
Q. 有没有办法知道是否启用了无日志保存?
请在个人页面的"本月使用量"中查看"有日志保存"和"无日志保存"的使用量。 如果您的使用量加到了"无日志保存"的使用量中,则说明无日志保存已启用。 以前,在无日志保存的情况下,语音识别结果的"utteranceid"值末尾会有[nolog],但末尾的[nolog]已被废弃。
Q. 异步 HTTP 接口 中Job状态为queued
的原因是什么?
从请求成功到语音识别完成需要一定时间,时间长短取决于发送的音频长度。
获取Job状态时,随着处理的进行,status
会按以下顺序变化:
queued → started → processing → completed
当状态为queued
时,表示语音识别尚未完成,请稍等片刻后再次请求获取结果。
此外,如果在处理过程中发生错误,状态将不会变为completed
,而是从任何状态转变为error
:
queued → error
queued → started → error
queued → started → processing → error
当语音识别请求成功后,请每隔30秒获取一次Job状态,直到status
变为completed
或error
。
Q. 如何在句号后添加换行?
AmiVoice API没有自动插入换行的功能,因此需要在客户端对语音识别结果的文本进行处理。 (例) 使用JavaScript将"。"替换为"。"和br标签。
text = text.replace(/。/g, "。<br>");
Q. 是否可以获取平假名的语音识别结果?
语音识别结果的JSON中包含每个单词的"读音"信息。
有关JSON的详细信息,请参阅各API的语音识别结果响应(同步 HTTP 接口、 异步 HTTP 接口 和WebSocket接口 )。"spoken"是每个单词的读音。
但是,这个"读音"是按照实际发音的,可能与"假名注音"不同。 例如,对于"私 は"这个表述,读音将是"わたくし わ"。
其他问题
Q. BIZTEL语音识别服务历史链接中除"会話_汎用"以外的引擎出错的原因是什么?
目前,只有"会話_汎用"引擎支持BIZTEL发送的音频数据格式(采样率低于16kHz),因此其他引擎会出错。
Q. 在使用AudioCodes公司的VoiceAI Connect时,能否反映已注册的单词到AmiVoice中?
我们从客户那里得到反馈,可以在Connection Engine Name(folderId)中在连接引擎名称后添加 profileId 的指定,格式如下:
<连接引擎名称> profileId=<:profileId>
这样就可以指定 profileId。 具体详情请向AudioCodes公司确认。