兰州高端网站,计算机编程培训班,the 7 wordpress theme,宁阳网站设计前言 Android开发的同学都知道#xff0c;在Android当中#xff0c;实现一段文字合成语音播放#xff0c;可以使用系统提供的对象TextToSpeech来很快的实现#xff0c;如果不用系统自带的#xff0c;也可以使用三方提供的#xff0c;比如讯飞的语音合成等等#xff0c;总…前言 Android开发的同学都知道在Android当中实现一段文字合成语音播放可以使用系统提供的对象TextToSpeech来很快的实现如果不用系统自带的也可以使用三方提供的比如讯飞的语音合成等等总之实现起来多种多样那么在鸿蒙当中如何实现根据指定的文本进行合成语音合成播放呢其实也是非常的简单因为鸿蒙当中也有textToSpeech。 实现步骤 第一步创建引擎得到文本转语音类 使用系统自带的Api textToSpeech调用createEngine方法来创建引擎接收的参数用来设置创建引擎实例的相关参数比如配置的语种、模式、音色和风格等。 private createTextToSpeech() {let extraParam: Recordstring, Object { style: interaction-broadcast, locate: CN, name: EngineName };let initParamsInfo: textToSpeech.CreateEngineParams {language: zh-CN,person: 0,online: 1,extraParams: extraParam}// 调用createEngine方法textToSpeech.createEngine(initParamsInfo,(err: BusinessError, textToSpeechEngine: textToSpeech.TextToSpeechEngine) {if (!err) {console.info(Succeeded in creating engine.);// 接收创建引擎的实例this.ttsEngine textToSpeechEngine;} else {console.error(Failed to create engine. Code: ${err.code}, message: ${err.message}.);}})} 关于参数需要注重说明一下首先是language也就是支持的语言目前只支持中文也就是“zh-CN”online字段是支持的模式0为在线模式目前不支持1为离线当前仅支持离线模式person音色0为聆小珊女声音色当前仅支持聆小珊女声音色extraParams为风格设置比如设置广播风格是否支持后台播放等。 可以发现虽然有很多参数但是目前都仅仅支持一种基本上固定就行extraParams中有一个isBackStage也就是是否支持后台播放为true时支持后台播报。 第二步语音播放 文字合成语音我们只需要调用speak方法即可两个参数第一个是需要合成语音的文本要求是不超过10000字符的中文文本这个是重点第二个是合成播报音频的相关参数用于配置语速、音量、音调、合成类型等其中有一个参数requestId需要知道它在同一实例内仅能用一次重复设置是不起作用的如果多次调用建议每次进行更换比如用时间戳随机数等等。 // 调用speak播报方法private speak(message:string) {let speakListener: textToSpeech.SpeakListener {// 开始播报回调onStart(requestId: string, response: textToSpeech.StartResponse) {console.info(onStart, requestId: ${requestId} response: ${JSON.stringify(response)});},// 完成播报回调onComplete(requestId: string, response: textToSpeech.CompleteResponse) {console.info(onComplete, requestId: ${requestId} response: ${JSON.stringify(response)});},// 停止播报完成回调调用stop方法并完成时会触发此回调onStop(requestId: string, response: textToSpeech.StopResponse) {console.info(onStop, requestId: ${requestId} response: ${JSON.stringify(response)});},// 返回音频流onData(requestId: string, audio: ArrayBuffer, response: textToSpeech.SynthesisResponse) {console.info(onData, requestId: ${requestId} sequence: ${JSON.stringify(response)} audio: ${JSON.stringify(audio)});},// 错误回调播报过程发生错误时触发此回调onError(requestId: string, errorCode: number, errorMessage: string) {console.error(onError, requestId: ${requestId} errorCode: ${errorCode} errorMessage: ${errorMessage});}};// 设置回调this.ttsEngine?.setListener(speakListener);// 设置播报相关参数let extraParam: Recordstring, Object {queueMode: 0,speed: 1,volume: 2,pitch: 1,languageContext: zh-CN,audioType: pcm,soundChannel: 3,playType: 1}let speakParams: textToSpeech.SpeakParams {requestId: 123456-a, // requestId在同一实例内仅能用一次请勿重复设置extraParams: extraParam}// 调用speak播报方法this.ttsEngine?.speak(message, speakParams)} 停止播放 直接调用stop即可。 ttsEngine.stop() 关闭引擎释放引擎资源 // 调用shutdown接口
ttsEngine.shutdown() 语音识别回调 let speakListener: textToSpeech.SpeakListener {// 开始播报回调onStart(requestId: string, response: textToSpeech.StartResponse) {console.info(onStart, requestId: ${requestId} response: ${JSON.stringify(response)});},// 完成播报回调onComplete(requestId: string, response: textToSpeech.CompleteResponse) {console.info(onComplete, requestId: ${requestId} response: ${JSON.stringify(response)});},// 停止播报完成回调调用stop方法并完成时会触发此回调onStop(requestId: string, response: textToSpeech.StopResponse) {console.info(onStop, requestId: ${requestId} response: ${JSON.stringify(response)});},// 返回音频流onData(requestId: string, audio: ArrayBuffer, response: textToSpeech.SynthesisResponse) {console.info(onData, requestId: ${requestId} sequence: ${JSON.stringify(response)} audio: ${JSON.stringify(audio)});},// 错误回调播报过程发生错误时触发此回调onError(requestId: string, errorCode: number, errorMessage: string) {console.error(onError, requestId: ${requestId} errorCode: ${errorCode} errorMessage: ${errorMessage});}};// 设置回调this.ttsEngine?.setListener(speakListener); 播报策略
在不同的场景下比如停顿单词连读数字分开读等等不同的场景就会有不同的播放策略。
单词播报方式
文本格式[hN] (N0/1/2)首先h是固定的N可以选择012三个数字0是智能判断单词播放方式。默认值即为01是逐个字母进行播报2是以单词方式进行播报。 举例 hello[h1] world hello使用单词发音world及后续单词将会逐个字母进行发音。 数字播报策略 格式和以上一样[nN] (N0/1/2)N可以选择012三个数字0是智能判断数字处理策略默认值为01是作为号码逐个数字播报2是作为数值播报超过18位数字不支持自动按逐个数字进行播报。 举例 [n2]123[n1]456[n0] 其中123将会按照数值播报456则会按照号码播报而后的文本中的数字均会自动判断。 插入静音停顿 格式为[pN]N为无符号整数单位为ms。 举例
你好[p1000]程序员一鸣 以上的语句播报时将会在“你好”后插入1000ms的静音停顿。 指定汉字发音 汉字声调用后接一位数字1~5分别表示阴平、阳平、上声、去声和轻声5个声调格式为[MN]其中M表示拼音N表示声调取值范围为1表示阴平2表示阳平3表示上声4表示去声5表示轻声。 举例 着[zhao2]火 “着”字将读作“zhaó”。 相关总结 文本合成语音的能力目前只能在真机上进行测试不支持模拟器。 文章转载自: http://www.morning.hxxzp.cn.gov.cn.hxxzp.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.ytnn.cn.gov.cn.ytnn.cn http://www.morning.rmmz.cn.gov.cn.rmmz.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.kndt.cn.gov.cn.kndt.cn http://www.morning.rzczl.cn.gov.cn.rzczl.cn http://www.morning.fcrw.cn.gov.cn.fcrw.cn http://www.morning.grqlc.cn.gov.cn.grqlc.cn http://www.morning.glrzr.cn.gov.cn.glrzr.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.rtspr.cn.gov.cn.rtspr.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.svrud.cn.gov.cn.svrud.cn http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn http://www.morning.mwhqd.cn.gov.cn.mwhqd.cn http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.jmbfx.cn.gov.cn.jmbfx.cn http://www.morning.tstkr.cn.gov.cn.tstkr.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.mstbbs.com.gov.cn.mstbbs.com http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn http://www.morning.hjwxm.cn.gov.cn.hjwxm.cn http://www.morning.myfwb.cn.gov.cn.myfwb.cn http://www.morning.dbqcw.com.gov.cn.dbqcw.com http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.bchhr.cn.gov.cn.bchhr.cn http://www.morning.rfwkn.cn.gov.cn.rfwkn.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.nqlx.cn.gov.cn.nqlx.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn http://www.morning.ypbdr.cn.gov.cn.ypbdr.cn http://www.morning.mehrim.com.gov.cn.mehrim.com http://www.morning.gcszn.cn.gov.cn.gcszn.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn http://www.morning.ysjjr.cn.gov.cn.ysjjr.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.rbjp.cn.gov.cn.rbjp.cn http://www.morning.bzlgb.cn.gov.cn.bzlgb.cn http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.wrlxt.cn.gov.cn.wrlxt.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.mdxwz.cn.gov.cn.mdxwz.cn http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn http://www.morning.swwpl.cn.gov.cn.swwpl.cn http://www.morning.lkbdy.cn.gov.cn.lkbdy.cn http://www.morning.csjps.cn.gov.cn.csjps.cn http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.flchj.cn.gov.cn.flchj.cn