跳至主要内容

故障排除

常见问题

Q. 语音识别准确度不如预期,我该怎么办?

请检查以下几点。另请参阅结果处理中的客户端错误。如果问题仍然存在,请与我们联系。

  • 检查音频数据的声道数

    对于立体声录音,只会识别第一个声道的音频。如果想要识别两个声道的音频,请分别发送分离后的音频文件。

  • 检查音频数据的采样率

    电话通话音频通常以8kHz采样,其他常用音频通常以16kHz或更高采样率录制。 会話_汎用引擎支持这些不同的采样率,但由于连接到不同的引擎,在请求时需要指定正确的采样率。 ※如果采样率指定错误,几乎无法识别(识别结果为空)。

  • 检查音频格式指定的字节序

    发送 不带 header 音频数据(RAW数据)时,除了采样率外,还需要指定字节序。小端数据添加lsb,大端数据添加msb(如lsb8Kmsb16K等)。

    ※如果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()方法设置代理服务器。

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变为completederror

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公司确认。