國內(nèi)wordpress主題網(wǎng)站下載愛城市網(wǎng)app官方網(wǎng)站
語音識別
需求:
- 參考官方文檔,整合語音識別api
- callback 的寫法改為 Promise 的版本
- 在startRecord中:
- 參考文檔實例化-開啟轉換
- 將錄制的內(nèi)容傳遞給錄音識別
- 回調(diào)函數(shù)中的 Log,改為 Logger
- 在closeRecord:
- 結束識別、釋放資源
- 設置狀態(tài)為 VoiceState.VOICEOVER
?
async startRecord() {// 開始識別this.asrEngine = await speechRecognizer.createEngine({language: 'zh-CN',online: 1})// 保存組件的 this,后續(xù)通過_this來使用組件const _this = thisthis.asrEngine.setListener({onStart(sessionId: string, eventMessage: string) {console.info(`onStart, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},onEvent(sessionId: string, eventCode: number, eventMessage: string) {console.info(`onEvent, sessionId: ${sessionId} eventCode: ${eventCode} eventMessage: ${eventMessage}`);},onResult(sessionId: string, result: speechRecognizer.SpeechRecognitionResult) {_this.keyword = result.result_this.onChange(result.result)console.info(`onResult, sessionId: ${sessionId} sessionId: ${JSON.stringify(result)}`);},onComplete(sessionId: string, eventMessage: string) {_this.onComplete(_this.keyword)_this.keyword = ''_this.voiceState = VoiceState.DEFAULTconsole.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},onError(sessionId: string, errorCode: number, errorMessage: string) {console.error(`onError, sessionId: ${sessionId} errorCode: ${errorCode} errorMessage: ${errorMessage}`);}})const recognizerParams: speechRecognizer.StartParams = {sessionId: '10000',audioInfo: {audioType: 'pcm',sampleRate: 16000,soundChannel: 1,sampleBit: 16}}this.asrEngine?.startListening(recognizerParams)// 開始錄音const audioStreamInfo: audio.AudioStreamInfo = {samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000,channels: audio.AudioChannel.CHANNEL_1,sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW}const audioCapturerInfo: audio.AudioCapturerInfo = {source: audio.SourceType.SOURCE_TYPE_MIC,capturerFlags: 0}const audioCapturerOptions: audio.AudioCapturerOptions = {streamInfo: audioStreamInfo,capturerInfo: audioCapturerInfo}this.audioCapturer = await audio.createAudioCapturer(audioCapturerOptions)this.audioCapturer.on('readData', (buffer) => {console.log('mk-logger', buffer.byteLength)this.asrEngine?.writeAudio('10000', new Uint8Array(buffer))})await this.audioCapturer.start()this.voiceState = VoiceState.VOICING}