本文介绍Gummy一句话识别和翻译Java API的使用,能够直接对一分钟内的音频流(无论是从外部设备如麦克风获取的音频流,还是从本地文件读取的音频流)进行识别或翻译,并实时输出结果。在识别或翻译一句话后将停止识别或翻译任务。
音频时长不能超过一分钟,否则将报错断连。
一句话的结束,通过静音时长来判断,当语音后面出现的静音时长超过预设的静音时长(默认为700ms,可通过请求参数
maxEndSilence
设置),系统会认为当前的一句话已结束。如果语音时长超过了一分钟,则认为这一分钟内的语音是一句话。
前提条件
已开通服务并获得API-KEY:获取API Key。建议您配置API Key到环境变量,从而避免在代码里显示配置API Key,降低泄漏风险。
已安装最新版DashScope SDK:安装SDK。
模型列表
模型名 | 模型简介 |
gummy-chat-v1 | Gummy一句话识别、翻译模型,在识别、翻译出一句话后会结束任务。默认进行标点符号预测和逆文本正则化(INT,Inverse Text Normalization)。支持定制热词。 |
快速开始
TranslationRecognizerChat类提供了一句话识别/翻译的关键接口,支持流式调用模式。
流式调用
通过实现回调接口的方式流式输出实时识别结果。
启动流式语音识别/翻译
实例化TranslationRecognizerChat类,调用
call
方法绑定请求参数和回调接口(ResultCallback)并启动流式语音识别/翻译。流式传输
循环调用TranslationRecognizerChat类的
sendAudioFrame
方法,将从本地文件或设备(如麦克风)读取的二进制音频流分段发送至服务端。在发送音频数据的过程中,服务端会通过回调接口(ResultCallback)的
onEvent
方法,将识别结果实时返回给客户端。建议每次发送的音频时长约为100毫秒,数据大小保持在1KB至16KB之间。
当识别到一句话后,
sendAudioFrame
方法返回false
,音频数据无法再继续上传。此时请终止循环。结束处理
调用TranslationRecognizerChat类的
stop
方法结束语音识别/翻译。该方法会阻塞当前线程,直到回调接口(ResultCallback)的
onComplete
或者onError
回调触发后才会释放线程阻塞。
请求参数
通过TranslationRecognizerParam
的链式方法配置模型、采样率、音频格式等参数。配置完成的参数对象传入TranslationRecognizerChat类的call
方法中使用。
参数 | 类型 | 默认值 | 是否必须 | 说明 |
参数 | 类型 | 默认值 | 是否必须 | 说明 |
model | String | - | 是 | 设置一句话识别/翻译的模型。如需了解当前支持的模型,请参见模型列表。 |
sampleRate | Integer | - | 是 | 设置待识别音频采样率(单位Hz)。只支持16000Hz。 |
format | String | - | 是 | 设置待识别音频格式。 支持的音频格式:pcm、pcm编码的wav、mp3、ogg封装的opus、ogg封装的speex、aac、amr。 |
vocabularyId | String | - | 否 | 设置热词ID,若未设置则不生效。 在本次语音识别中,将应用与该热词ID对应的热词信息。具体使用方法请参见定制热词。 |
sourceLanguage | String | auto | 否 | 设置源(待识别/翻译语言)语言代码。如果无法提前确定语种,可不设置,默认为 目前支持的语言代码:
|
transcriptionEnabled | boolean | true | 否 | 设置是否启用识别功能。 模型支持单独开启识别或翻译功能,也可同时启用两种功能,但至少需要开启其中一种能力。 |
translationEnabled | boolean | false | 否 | 设置是否启用翻译功能。要正常输出翻译结果,需配置 模型支持单独开启识别或翻译功能,也可同时启用两种功能,但至少需要开启其中一种能力。 |
translationLanguages | String[] | - | 否 | 设置翻译目标语言代码。目标语言的代码与 目前支持的翻译包括: 中->英,中->日,中->韩, 英->中,英->日,英->韩, (日、韩、粤、德、法、俄、意、西)->(中、英)。 目前暂不支持同时翻译为多种语言,请仅设置一个目标语言以完成翻译。 |
maxEndSilence | Integer | 700 | 否 | 设置最大结束静音时长,单位为毫秒(ms),取值范围为200ms至6000ms。 若语音结束后静音时长超过该预设值,系统将判定当前语句已结束。 |
apiKey | String | - | 否 | 设置用户API Key。 |
关键接口
TranslationRecognizerChat
类
TranslationRecognizerChat
通过“import com.alibaba.dashscope.audio.asr.translation.TranslationRecognizerChat;
”方式引入,提供一句话识别/翻译的关键接口。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
|
| 无 | 启动一句话识别/翻译。 详细的调用流程和参考示例请参见流式调用。 |
|
| 无 | 推送音频,每次推送的音频流不宜过大或过小,建议每包音频时长为100ms左右,大小在1KB~16KB之间。 当已经识别到一句话后,调用 识别结果在回调接口(ResultCallback)的 详细的调用流程和参考示例请参见流式调用。 |
| 无 | 无 | 结束一句话识别/翻译。 该方法会阻塞当前线程,直到回调接口(ResultCallback)的 详细的调用流程和参考示例请参见流式调用。 |
回调接口(ResultCallback
)
ResultCallback
通过“import com.alibaba.dashscope.common.ResultCallback;
”方式引入。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 当服务有回复时会被回调。 | |
| 无 | 无 | 任务完成后该接口被回调。 |
|
| 无 | 发生异常时该接口被回调。 |
响应结果
实时结果(TranslationRecognizerResult
)
封装了实时识别结果TranscriptionResult
和实时翻译结果TranslationResult
。
由于不同语言的词汇差异,识别和翻译的中间结果可能不会同时返回,因此在某些情况下,返回的结果中可能仅包含识别或翻译的部分。识别与翻译的进度会在 isSentenceEnd
为true
时同步完成。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 实时识别结果 | 获取
|
| 无 | 实时翻译结果 | 获取
|
实时识别结果(TranscriptionResult
)
TranscriptionResult代表一次实时识别的结果,包含了时间戳和文本信息等。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 句子ID | 返回句子ID。 |
| 无 | 句子开始时间,单位为ms | 返回句子开始时间。 |
| 无 | 句子结束时间,单位为ms | 返回句子结束时间。 |
| 无 | 识别文本 | 返回识别文本。 |
| 无 | 字时间戳信息: | 返回字时间戳信息。
|
| 无 |
| 当前文本是否构成完整的句子。 |
实时翻译结果(TranslationResult
)
TranslationResult
代表一次实时翻译的结果,包含请求参数transcriptionTargetLanguages
指定的所有语种的翻译结果。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 翻译结果中的所有语种列表 | 返回翻译结果中的所有语种列表。 |
|
|
| 返回该对应语种的翻译结果。
|
| 无 |
| 当前文本是否构成完整的句子。 |
某语种对应的翻译结果(Translation
)
Translation
代表实时翻译结果中一种语言的结果,包含了时间戳和文本信息等。
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 句子ID | 返回句子ID。 |
| 无 | 翻译语种 | 返回翻译语种。 |
| 无 | 句子开始时间,单位为ms | 返回句子开始时间。 |
| 无 | 句子结束时间,单位为ms | 返回句子结束时间。 |
| 无 | 识别文本 | 返回识别文本。 |
| 无 | 字时间戳信息: | 返回字时间戳信息。
|
| 无 |
| 当前文本是否构成完整的句子。 |
字时间戳信息(Word
)
接口/方法 | 参数 | 返回值 | 描述 |
接口/方法 | 参数 | 返回值 | 描述 |
| 无 | 字开始时间,单位为ms | 返回字开始时间。 |
| 无 | 字结束时间,单位为ms | 返回字结束时间。 |
| 无 | 字 | 返回识别的字。 |
错误码
在使用API过程中,如果调用失败并返回错误信息,请参见错误信息进行解决。
更多示例
更多示例,请参见GitHub。
常见问题
请参见GitHub QA。
- 本页导读 (1)
- 前提条件
- 模型列表
- 快速开始
- 流式调用
- 请求参数
- 关键接口
- TranslationRecognizerChat类
- 回调接口(ResultCallback)
- 响应结果
- 实时结果(TranslationRecognizerResult)
- 实时识别结果(TranscriptionResult)
- 实时翻译结果(TranslationResult)
- 某语种对应的翻译结果(Translation)
- 字时间戳信息(Word)
- 错误码
- 更多示例
- 常见问题