当前位置: 首页 > news >正文

discuz 网站风格境外公司注册

discuz 网站风格,境外公司注册,网站建设心得总结,广州网站开发小程序提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言效果图一、去讯飞官网注册[讯飞官网](https://www.xfyun.cn/)二、下载jar和so文件[讯飞SDK](https://download.csdn.net/download/Android_Cll/91764299)三、语音…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 效果图
  • 一、去讯飞官网注册[讯飞官网](https://www.xfyun.cn/)
  • 二、下载jar和so文件[讯飞SDK](https://download.csdn.net/download/Android_Cll/91764299)
  • 三、语音合成
    • 1.将jar和so文件放到libs文件下并引用(必须要so文件)
    • 2.Application中实例化
    • 3.activity中使用
  • 四、语音识别
    • 1.步骤同上1和2
    • 2.activity中使用
  • 总结


前言

目前只要是关于小说或者英语相关软件,就会遇到需要朗读文本或者单词,这时就需要涉及到语音合成功能,如果再涉及一些聊天啥的(不一定是即时通讯)就会涉及语音识别,比如简单的聊天问AI,用语音问,这时后台会告诉你AI那边没有语音的,需要把语音转成文字给AI,来吧,看看怎么实现。


效果图

在这里插入图片描述
在这里插入图片描述

一、去讯飞官网注册讯飞官网

去讯飞官网注册后进行实名认证,然后创建应用就会得到APP_ID。

二、下载jar和so文件讯飞SDK

三、语音合成

1.将jar和so文件放到libs文件下并引用(必须要so文件)

代码如下(语音合成和识别共用):

    //讯飞implementation files('libs/Msc.jar')

2.Application中实例化

代码如下(语音合成和识别共用,切记保留appid=,只替换后面YOUR_APP_ID):

// 初始化讯飞 SDK(替换 YOUR_APP_ID)
SpeechUtility.createUtility(this, "appid=YOUR_APP_ID")

3.activity中使用

    //定义变量private var tts: SpeechSynthesizer? = null// 初始化语音合成器tts = SpeechSynthesizer.createSynthesizer(this, null)//朗读 xiaoyan这里自己去新建应用后找到语音合成,特色发音,新建发音人private fun startTTS(text: String?) {// 设置参数tts!!.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan")tts!!.setParameter(SpeechConstant.SPEED, "40") // 语速(0~100)tts!!.setParameter(SpeechConstant.PITCH, "50") // 音调(0~100)tts!!.setParameter(SpeechConstant.VOLUME, "100") // 音量(0~100)// 开始合成并播放tts!!.startSpeaking(text, object : SynthesizerListener {override fun onSpeakBegin() {// 开始播放}override fun onBufferProgress(percent: Int, beginPos: Int, endPos: Int, info: String?) {// 缓冲进度}override fun onSpeakPaused() {}override fun onSpeakResumed() {}override fun onSpeakProgress(percent: Int, beginPos: Int, endPos: Int) {// 播放进度}override fun onCompleted(error: SpeechError?) {if (error != null) {Log.e("TTS", "Error: " + error.errorCode)}}override fun onEvent(eventType: Int, arg1: Int, arg2: Int, obj: Bundle?) {// 事件回调(如播放暂停、恢复)}})}override fun onDestroy() {super.onDestroy()// 释放资源if (tts != null) {tts!!.stopSpeaking()tts!!.destroy()}}

四、语音识别

1.步骤同上1和2

2.activity中使用

 //定义变量private var mIat: SpeechRecognizer? = null // 语音识别对象// 创建语音识别对象mIat = SpeechRecognizer.createRecognizer(this, object : InitListener {override fun onInit(code: Int) {println("初始化--->$code")setIatParams() // 设置参数}})
// 设置识别参数private fun setIatParams() {if (mIat == null) return// 设置听写参数mIat!!.setParameter(SpeechConstant.DOMAIN, "iat") // 语音转写mIat!!.setParameter(SpeechConstant.LANGUAGE, "zh_cn") // 中文mIat!!.setParameter(SpeechConstant.ACCENT, "mandarin") // 普通话mIat!!.setParameter(SpeechConstant.VAD_BOS, "4000") // 语音前缀静音超时(毫秒)mIat!!.setParameter(SpeechConstant.VAD_EOS, "1000") // 语音后缀静音超时(毫秒)mIat!!.setParameter(SpeechConstant.ASR_PTT, "1") // 标点符号(1有标点,0无标点)}
//开始录音时调用
if (mIat != null) {mIat!!.startListening(mRecognizerListener) // 开始录音
}
//结束录音调用
if (mIat != null) {mIat!!.stopListening() // 停止录音并获取最终结果
}// 识别监听器
private val mRecognizerListener: RecognizerListener = object : RecognizerListener {override fun onResult(results: RecognizerResult, isLast: Boolean) {// 实时返回结果(isLast为true时表示最终结果)val jsonStr: String? = results.resultStringval text: String? = parseWFromJson(jsonStr)if (isLast) {//最终结果println("文件目录--->$text")} else {
//                tvResult.append("[实时结果] " + text + "\n")}}override fun onError(error: SpeechError) {println("识别错误:" + error.errorCode + ", " + error.errorDescription)// 错误处理
//            tvResult.setText("错误:" + error.getErrorDescription())}override fun onVolumeChanged(p0: Int, p1: ByteArray?) {// 音量变化(0-30)println("当前音量:$p0")}override fun onBeginOfSpeech() {// 开始录音println("开始录音")
//            tvResult.setText("正在录音...")}override fun onEndOfSpeech() {// 结束录音(自动触发)println("录音结束")}override fun onEvent(eventType: Int, arg1: Int, arg2: Int, obj: Bundle?) {// 扩展事件回调}}//语音转文字数据获取格式化fun parseWFromJson(jsonStr: String?): String {val result = StringBuilder()try {val jsonObject: JSONObject = JSONObject(jsonStr)val wsArray: JSONArray = jsonObject.getJSONArray("ws") // 获取 ws 数组// 遍历 ws 数组for (i in 0 until wsArray.length()) {val wsItem: JSONObject = wsArray.getJSONObject(i)val cwArray: JSONArray = wsItem.getJSONArray("cw") // 获取 cw 数组// 遍历 cw 数组for (j in 0 until cwArray.length()) {val cwItem: JSONObject = cwArray.getJSONObject(j)val w: String? = cwItem.optString("w", "") // 提取 w 字段result.append(w) // 拼接结果}}} catch (e: JSONException) {e.printStackTrace()}return result.toString()}//释放资源override fun onDestroy() {super.onDestroy()// 释放资源if (mIat != null) {mIat!!.cancel();mIat!!.destroy();}}

总结

除了添加jar文件外一定要引用so文件,不然会报错,语音合成发音人可新建特色发音,根据自己选择新建,语音识别如果外加录音,就在开始录音时调用,结束录音结束识别即可。

http://www.dtcms.com/a/611141.html

相关文章:

  • 网站的建设原始代码哪家公司做网站便宜
  • 网站建设这块是怎么挣钱汕头建站模板搭建
  • 高水平的郑州网站建设机械网站建设哪家好
  • RAG 和微调(Fine-tuning)核心对比:通俗版 + 实操选型
  • 第四章 Agent的几种经典范式
  • 发光二极管解析
  • 从今日市场动荡看TRS收益互换与场外个股期权系统开发紧迫性
  • 安全版普通用户获取系统对象的访问权限
  • 滕州做网站的多少预订网站模板
  • 免费网站入口网站空间哪家好
  • 松江网站建设哪家好国内外网站开发技术
  • 网站设计电商首页网站平台建设意见
  • BAS16,215 硅高速开关二极管 NXP安世半导体 集成电路芯片解析
  • LangChain的核心组件Messages之初体验
  • RocketMQ代码分析——DefaultLitePullConsumer
  • 六安网站建设招聘企业电子商务网站建设规划
  • Qt开发——常见控件(1)
  • 【WSL】C盘迁移
  • 上海小企业网站建设平台天眼查企业查询
  • 建设团购网站电子商务网站开发公司
  • 1.1.1 将TIA Opennes中添加本电脑用户
  • 代码随想录 763.划分字母区间
  • 网站导航包括only网站建设分析
  • 网站建站要多少钱智慧团建网站登录平台官网
  • 基于PVLIB的光伏发电量计算模型:SAPM-Sandia模型的原理与全流程解析
  • redis 在网站开发中怎么用安阳信息港网站
  • 30、【Ubuntu】【远程开发】内网穿透:反向隧道建立(二)
  • 文化厅网站建设审核报告单无锡正规网站seo公司
  • Swift中View和ViewController的生命周期
  • 网站建设是前端么网站开发的岗位及职责