s命令数据包/s命令响应数据包
s 命令数据包和s命令响应数据包是成对的。 当使用 s 命令 通知服务器开始发送语音数据时,服务器会返回 s 命令响应数据包。
如果 s 命令 响应数据包仅为"s"一个字符,则表示成功。随后可以开始通过 p 命令数据包提供语音数据。当所有语音数据发送完成后,需要用e命令数据包通知发送结束,但如果连接仍然保持,则可以再次从s命令数据包开始重新启动。
s 命令数据包
开始发送语音数据。 除了通知开始发送外,还需要发送要使用的语音格式,要使用的语音识别引擎(连接引擎名称)、认证信息(APPKEY)以及其他参数。
格式
类型 TEXT
s <audio_format> <grammar_file_names>
s <audio_format> <grammar_file_names> <key>=<value> ...
s 和各参数块之间的分隔符是半角空格。 以下将详细说明各参数。
<audio_format>
指定要使用的语音格式。此参数是必需的。关于可以指定的格式名称,请参阅使用指南中的关于音频格式。
<grammar_file_names>
指定连接引擎名称。此参数是必需的。
<key>
<key>可以指定以下 key 字符串。 如果<value>中包含空格,请用半角双引号「"」将value括起来。
| <key> | 说明 |
|---|---|
| authorization | authorization 需设置为 MyPage 上显示的[APPKEY]或通过一次性APPKEY发行API获取的一次性APPKEY。此参数是必需的。 |
| profileId | profileId 是在注册用户特定单词时使用的用户特定数据文件(profile)的ID。只有该用户才能指定并使用 该 profile 。 profile 存储在用户特定区域,因此不会与其他用户的名称发生冲突。※ profileId 需指定由半角英文字母、数字以及「-」(半角连字符)、「_」(半角下划线)组成的字符串。但是,以「__」(两个半角下划线)开头的字符串被语音识别引擎保留,因此请不要指定以「__」(两个半角下划线)开头的字符串。在 MyPage 上注册单词时,与 MyPage 连接信息中列出的 serviceId(由 accountId 自动生成)同名的 profile (我的单词表)会自动创建并保存在服务器上。当想使用此 profile (我的单词表)进行语音识别时,请在 profileId 中指定 "在 serviceId 前加半角冒号":"的字符串" 。(例)如果 serviceId 为"aiueo12345",则 profileId 的值为":aiueo12345"。单词注册 在 MyPage 的单词注册画面进行单词注册是最简单的方法。使用这种方法的话,几乎不需要使用后面介绍的 profileWords。关于在 MyPage 的单词注册画面创建的 profile (我的单词表)与 profileWords 的关系,请参阅此页面中的 profileId 和 profileWords。同时指定 profileId 和 profileWords 时,需要先指定 profileId。 |
| profileWords | 在 profileWords 参数中设置要注册的单词的显示和读音。格式为『显示<半角空格>读音』。要注册多个单词时,用「 | 」分隔。发送时,请用「"」将整个 profileWords 参数值括起来。 ※指定类别名时,请使用"显示<半角空格>读音 <半角空格> 类别名"的格式。 |
| keepFillerToken | 如果想在识别结果字符串中包含发话中的填充词(如「あー」或「えー」等),请按以下方式指定: keepFillerToken=1 填充词有各种各样,但所有填充词的显示前后都用半角%包围。(例) %あー% %えー% %おー% %えーっと% 如果没有指定 keepFillerToken=1,填充词将从识别结果字符串中删除。 |
| segmenterProperties | 这是发言检测的参数。可以控制说话人区分的启用/禁用,并设置调整结果的参数。可以用空格分隔设置多个参数。 segmenterProperties="key1=value1 key2=value2..." 可以设置的参数如下: useDiarizer 设置为1时启用说话人分类。 ・可指定的值: 0 或 1 ・默认值: 0 diarizerAlpha 这是控制新说话人出现容易程度的参数。指定较大的值会使新说话人更容易出现,指定较小的值会使新说话人更难出现。只在 useDiarizer=1 时有效。・可指定的值: 0以上 ・参考范围: 1e-100~1e50 ・默认值: 1 diarizerTransitionBias 这是控制说话人切换容易程度的参数。指定较大的值会使说话人更容易切换,指定较小的值会使说话人更难切换。只在 useDiarizer=1 时有效。・可指定的值: 0以上1以下 ・参考范围: 1e-150~1e-10 ・默认值: 1e-40 (8k的情况为1e-20) |
使用在 MyPage 注册的单词时的s命令
s MSB16K -a-general profileId=:<serviceId> authorization=XXXXXXXXXXXXXX
为本次会话临时注册单词时的s命令
s MSB16K -a-general profileWords="AMI あみ|AmiVoice あみぼいす" authorization=XXXXXXXXXXXXXX
上面的例子中,没有指定 profileId,而是注册了"AMI あみ|AmiVoice あみぼいす"(2个单词)。接下来,在这个会话中发送语音数据时,这些单词将用于识别处理。之后,发送e命令数据包(结束会话)后,这些单词将失效,也不会被保存。
创建自定义 profile 并注册单词时的s命令
s MSB16K -a-general profileId=test profileWords="AMI あみ|AmiVoice あみぼいす" authorization=XXXXXXXXXXXXXX
在上面的例子中,profileId 为 'test',注册的单词为 "AMI あみ|AmiVoice あみぼいす"(2个单词)。
※无法在 MyPage 的单词注册画面中管理自定义创建的 profile 。
将单词保存到自定义 profile 的方法
在发送带有 profileId 和 profileWords 的s命令后,不发送语音数据,而是发送e命令数据包。当音频数据发送停止被接受时,单词将被保存到指定的 profileId 中。
要将单词保存注册到 profile 中,每次都需要发送所有要保存注册的单词。如果之前已经注册了单词,后来想添加其他单词,则需要一起发送要添加的单词和过去已注册的单词。
将单词保存到 profile 是"完全替换"的操作。用户自己负责记录当前 profile 中注册的单词以及过去注册过哪些单词。
- 如果使用 MyPage 的单词注册,可以在画面上确认当前注册的单词,并可以选择从CSV文件添加注册或全部替换。
- 在连接以将单词保存到自定义 profile 时,不要在
profileId的开头添加":"(半角冒号)。如果在开头添加半角冒号,单词将不会被保存到该 profile 中,请注意。
使用注册单词的方法
要使用 profile 中注册的单词进行语音识别,在发送s命令数据包时,请在 profileId 中指定之前进行单词注册的 profile 的 profileId,并在开头添加":"(半角冒号)。
在多个成员使用的情况下,如果在 profileId 的开头不加":"就指定,可能会导致识别精度下降。
删除注册单词的方法
如果想删除注册的单词,请在发送s命令时指定 profileId,并在 profileWords 中指定一个半角空格。
将自定义 profile 用于语音识别时的s命令
s MSB16K -a-general profileId=:test authorization=XXXXXXXXXXXXXX
s 命令响应数据包
作为对 s 命令的响应从服务器发送到客户端。
格式
类型 TEXT
开始请求成功时的响应数据包
当发送开始请求成功时,会返回单个字符s。
s
开始请求失败时的响应数据包
当发送开始请求失败时,会在s后面加上半角空格和错误消息。
s <error_message>
错误消息
客户端错误
由于s命令的请求参数或认证信息错误导致的错误。请修正后重新发送请求。
| 错误消息 | 内容 |
|---|---|
| s received unsupported audio format | 指定的音频格式有误。 |
| s can't verify service authorization | 认证失败。原因可能是以下之一: - 未设置 APPKEY - 设置的 APPKEY 有误 - 使用一次性 APPKEY时从限制 IP 地址以外的地址访问 |
| s can't validate service authorization | 认证失败。原因可能是以下之一: - 设置的 APPKEY 有误(包括账户已失效的情况) - 指定的连接引擎名称有误(例如:将 -a-general误写为a-general等类型错误,或在未订 阅 AmiVoice API Private 的情况下指定仅供 Private 使用的引擎等) |
| s service authorization has expired: <expirationTime> <expiresIn> | 一次性 APPKEY限制的有效期已过。 |
| s can't connect to recognizer server | 认证失败。一次性 APPKEY不正确。 |
| s can't connect to recognizer server (can't find available servers) | 连接失败,原因是指定的连接引擎名称与音频格式的采样率组合不正确,无法找到适当的引擎。 例如,当为不支持 8k 采样率的引擎指定 8k 音频格式时,就会出现这种情况。关于各种语音识别引擎支援的采样率,请参考语音识别引擎列表。 |
| s can't start feeding audio data to recognizer server | 指定的 segmenter 参数有误,音频数据发送开始处理失败。 |
服务器错误
由于基础系统故障等原因可能偶尔发生的错误。请稍等片刻后重新发送请求。
| 错误信息 | 内容 |
|---|---|
| s can't connect to recognizer server (can't connect to server) | 无法连接到语音识别服务器。 |
| s can't connect to recognizer server (can't find available servers because all requested servers are busy) | 由于指定的连接引擎名称或音频格式对应的所有适当的语音识别服务器都处于繁忙状态,因此无法连接。 |
| s can't connect to recognizer server (can't find available servers because maximum allowed clients has reached) | 无法连接到语音识别服务器,因为已达到可连接客户端的最大数量。。 |
| s can't connect to recognizer server (can't send data) | 由于基础系统内服务器间的通信错误,连接失败。 |
| s can't connect to recognizer server (can't receive data) | 由于基础系统内服务器间的通信错误,连接失败。 |
| s can't connect to recognizer server (disconnected by force) | 由于基础系统内服务器间的通信错误,连接失败。 |
由于限制条件导致的错误
当触及限制条件时发生。请从s命令的请求重新开始。
| 错误信息 | 内容 |
|---|---|
| s session timeout occurred | 发生了会话超时。当超过限制条件中的会话最长时间时会发生。服务器端已执行断开连接处理。 |