华为云一句话语音识别
·
语音识别问题:使用华为云http直接进行通讯,注意点如下(感谢社区大神Horo~的帮助):
IDE、SDK、系统版本:DevEco Studio 3.0.0.991 SDK 3.2.12.2 系统是release3.2
- 音频的录制,参数需要设置16k16bit单通道录音数据(否则请求成功后只会返回空值),具体接口参考:https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-media.md/#codecmimetype8
let audioConfig = {
audioEncodeBitRate : 16000,
audioSampleRate : 16000,//采样率16k
numberOfChannels : 1, // 单通道
uri :'',
location : { latitude : 30, longitude : 130},
audioEncoderMime : media.CodecMimeType.AUDIO_AAC, //唯一选择
fileFormat : media.ContainerFormatType.CFT_MPEG_4A,//唯一选择
}
- 华为云TOKEN的获取:TOKEN在API调试时要全部填写正确,否则请求一句话识别时报错。
(获取TOKEN时我采用API调试:https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/debug?api=KeystoneCreateUserTokenByPassword)
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"name": "CSDN-ruihahadaren"
},
"name": "CSDN-ruihahadaren"
}
}
},
"scope": {
"domain": {
"id": "ac2f106414f14544ba7366c8ead5ba7e",
"name": "CSDN-ruihahadaren"
},
"project": {
"id": "24006b8776a84b93b387353e460dff86",
"name": "cn-north-4"
}
}
}
}
此处的账号需要换自己的账号才可以。所有都要填。
- 获取Base64的音频,此处感谢社区大神Horo~的帮助,关键代码如下:
let stat = fs.statSync(globalThis.fd) // 获取文件消息
let size = stat.size // 获取文件大小
let buffer = new ArrayBuffer(size)
let stream = fs.fdopenStreamSync(globalThis.fd, 'r') // 打开流
stream.readSync(buffer)
let uint8Array = new Uint8Array(buffer);
let helper = new util.Base64Helper()
this.datas = helper.encodeToStringSync(uint8Array) // base64编码
未知原因base64的log一次性打印不出,只能循环打印:
for(var i =0;i<this.datas.length;i++){
console.log(i+":"+this.datas[i])
}
- http请求:(因为open Harmony接口的音频编码格式。当前仅支持AUDIO_AAC,对应的音频格式为:mp4a-latm类型。)参考:https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-http.md/
globalThis.httpRequest.request("https://sis-ext.cn-north-4.myhuaweicloud.com/v1/24006b8776a84b93b387353e460dff86/asr/short-audio",
{
method: http.RequestMethod.POST,
header: {
"X-Auth-Token": globalThis.token, // TOKEN
"Content-Type":"application/json"
},
extraData: {
"config": {
"audio_format": "auto", //m4a音频,只有这一种符合(前提16k16bit单通道录音数据)
"property": "chinese_16k_common",
"add_punc": "no",
"digit_norm": "yes",
"need_word_info": "no"
},
"data":this.datas // Base64编码
},
readTimeout: 60000,
connectTimeout: 60000
}, (err, data) => {
if (!err) {
console.info('success');
console.info(JSON.stringify(data));
} else {
console.info('error:' + JSON.stringify(err));
}
})
更多推荐
所有评论(0)