有奖:语音产品征文挑战赛火热进行中> HOT

1. 接入流程

?
?
?

2. 接入准备

2.1 SDK 获取

实时语音识别 Harmony SDK 以及 Demo 的下载地址: 接入 SDK 下载

2.2 接入须知

开发者在调用前请先查看实时语音识别的接口说明,了解接口的使用要求使用步骤
该接口需要手机能够连接网络(3G、4G、5G 或 Wi-Fi 等)。
运行 Demo 必须设置 AppID、SecretID、SecretKey,可在 API 密钥管理 中获取。

2.3 开发环境

添加实时语音识别 SDK har:
"dependencies": {
????"QCloudRealTime": "file:../qcloudrealtime.har"
}
需根据实际路径替换配置。

3. 快速接入

以下为 demo 中的代码片段,完整代码请参考 sdk/demo 工程。

3.1 配置识别任务

private _builder: QCloud.RealTime.Builder = new QCloud.RealTime.Builder
...
this._builder.appID = this._app_id
this._builder.secretID = this._secret_id
this._builder.secretKey = this._secret_key
配置识别任务相关参数。

3.2 启动识别任务

使用上面的 Builder 可以创建并启动识别任务:
this._controller = this._builder.build(
this._source, {
onSlice: (data, raw) => {
console.log(`----- ${data}`)
this._tmp_result = data
},
onSegment: (data, raw) => {
console.log(`----- ${data}`)
this._result += data
this._tmp_result = ''
},
onData(data) {
console.log(`----- ${data}}`)
},
onSilence: () => {
this._controller?.cancel()
console.log(`----- silence`)
},
onVolume: (db) => {
this._volume = db
},
onLogger(level, message) {
console.log(`${message}`)
},
})

3.3 停止识别任务

停止识别任务可以通过控制器的 stop 方法停止:
this._controller!.stop()
另一种情况当数据源的 empty 返回 true 时识别也会停止。

4. 主要接口类和方法说明

4.1 Builder 类说明

Builder 用于创建语音识别任务。
方法
1. setApiParam(key: string, value: string | number | null)
设置请求后台 websocket 时的参数,后台支持参数请参考 实时语音识别(websocket)
名称
类型
描述
key
string
请求后台的参数名称
value
string|number|null
请求后台的参数值,null时将删除已设置的参数,number会转为string后设置
2. getApiParam(key: string): string | null
获取已设置的请求参数。
名称
类型
描述
key
string
参数名称
3. build(source: DataSource, listener: Listener): Controller
创建并启动识别任务同时返回识别任务控制器。
?
属性
名称
类型
描述
appID
string
腾讯云appId
secretID
string
腾讯云临时secretId
secretKey
string
腾讯云临时secretKey
token
string
腾讯云临时token,为空字符串时表示不使用临时授权,临时授权参考 获取联合身份临时访问凭证?
slice
number
分片时间,单位ms,开启opus时必须为40的倍数,不建议更改此参数
enableOpus
boolean
开启opus编码
enableSilence
boolean
开启静音检测,开启后识别到静音后会触发一次静音回调,不会停止任务
enableDetectVolume
boolean
开启音量检测,开启后会通过音量回调返回当前音量
silenceTimeout
number
静音检测时长,开启静音检测后生效
loggerLevel
LoggerLevel
日志等级,日志回调只会返回大于改等级的日志
saveDataPath
string
保存音频数据路径,路径为空不生效,否则将会存储数据源读取到的音频数据到该路径
以下属性是为了简化设置请求 API 参数流程,内部实现 key 值固定的 setApiParam 和 getApiParam 方法。
?
描述中仅说明 key 值,详细说明请参考 实时语音识别(websocket)
名称
类型
描述
engineModelType
string
engine_model_type
needVad
number
needvad
hotwordID
string
hotword_id
customizationID
number
customization_id
filterDirty
number
filter_dirty
filterModal
number
filter_modal
filterPunc
number
filter_punc
filterEmptyResult
number
filter_empty_result
convertNumMode
number
convert_num_mode
wordInfo
number
word_info
vadSilenceTime
number
vad_silence_time
maxSpeakTime
number
max_speak_time
noiseThreshold
number
noise_threshold
hotwordList
string
hotword_list
inputSampleRate
number
input_sample_rate

4.2 Controller 类说明

Controller 用于控制识别任务的流程。
属性
名称
类型
描述
task
Promise<void>
识别任务,识别任务正常结束则此 Promise 正常返回,否则抛出异常
voice_id
string
连接成功后的 voiceid,否则为空字符
方法
1. stop(): void
停止识别任务,调用此方法会向后台发送停止识别的消息,成功停止后 task 会结束。
2. cancel(): void
取消识别任务,调用此方法会取消当前识别任务,成功取消后 task 会抛出 SDKErrorImpl 类型的异常,且此异常的 code 为 CANCEL_ERROR。

4.3 Listener 类说明

Listener 类用于接收识别过程中的信息。
属性
名称
类型
描述
onSlice?
(data: string, raw: string) => void
收到后台 websocket 的消息后且解析到 slice_type 为0或1回调改方法
onSegment?
(data: string, raw: string) => void
收到后台 websocket 的消息后且解析到 slice_type 为2回调改方法
onData?
(data: string) => void
收到后台 websocket 的消息后回调该方法
onLogger?
(level: LoggerLevel, message: string) => void
日志回调,Builder 的 loggerLevel 会影响此回调的内容
onSilence?
() => void
静音回调,开启 Builder 的 enableSilence 后检测到静音后回调
onVolume?
(db: number) => void
音量回调,开启 Builder 的 enableDetectVolume 后回调

4.4 DataSource 类说明

DataSrouce 类用来提供用于识别的音频数据。
属性
名称
类型
描述
voice_format
string
音频编码,目前仅支持 pcm,即数据类型为16000hz,16bit,小端的pcm数据流
empty
boolean
返回是否还有音频数据
start
() => Promise<void>
SDK 开始识别时会调用此方法,此方法发生的异常会通过task抛出
stop
() => Promise<void>
SDK 停止识别时会调用此方法,此方法发生的异常会通过task抛出
read
(ms: number) => Promise<ArrayBuffer>
SDK 读取音频数据,ms为读取数据的时长,voice_format 为 pcm 时,此方法需返回40 *16?* 2长度的数据,此方法发生的异常会通过 task 抛出

5. 错误码

识别任务抛出类型为 SDKErrorImpl 时的错误码。
错误码
名称
描述
-1
UNKNOWN_ERROR
未知错误
1
NETWORK_ERROR
网络错误
2
SERVER_ERROR
服务端错误,详情通过 message 查看
3
SIGNATURE_ERROR
签名错误
4
PARAMETER_ERROR
参数错误,Builder 设置的参数无法创建识别任务
5
CANCEL_ERROR
取消错误,调用 cancel 方法取消任务时出现
6
CREATE_FILE_ERROR
创建文件失败
7
DATA_LENGTH_ERROR
数据源返回的数据长度不符合要求


http://www.vxiaotou.com