Android语音转文字一识别语音

项目地址:https://github.com/zhanlv/VtDemo

讯飞AndroidSDK文档:https://doc.xfyun.cn/msc_android/%E9%A2%84%E5%A4%87%E5%B7%A5%E4%BD%9C.html

讯飞语音SDK不提供android平台语音转写的功能(只支持java平台,当然android可以通过访问后台去请求),这里是通过语音听写来识别音频文件内容,支持音频长度≤60s(没有测试过音频文件这么长的)。

创建应用-添加新服务-【语音听写】 

 集成讯飞语音SDK到项目后,可以创建一个识别类,将下面代码复制到项目即可

创建SpeechRecognizer实例,一些初始化操作

   @Override public void start(Context context) {  mRecognizer = SpeechRecognizer.createRecognizer(mContext, mInitListener);mSpeechResult = new StringBuilder();if (mRecognizer == null) {return;}mUserList = UserManager.getUserList();UserWords userWords = new UserWords();
//支持上传热词,比如用户名、关键字,可提高识别准确率for (User user : mUserList) {userWords.putWord(user.getName());}mRecognizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);mRecognizer.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8");ret = mRecognizer.updateLexicon("userword", userWords.toString(), new LexiconListener() {@Override public void onLexiconUpdated(String s, SpeechError error) {if (error != null) {LogUtil.e(error.toString());} else {LogUtil.e("success");}}});if (ret != ErrorCode.SUCCESS) mView.showTip("上传热词失败,错误码:" + ret);
}

设置识别参数:

//设置参数public void setParam(String vadEos, String asrPtt, String asrPath) {if (mRecognizer == null) {return;}mView.stopPlayer();mRecognizer.setParameter(SpeechConstant.PARAMS, null);// 设置引擎mRecognizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置返回结果格式mRecognizer.setParameter(SpeechConstant.RESULT_TYPE, "json");mRecognizer.setParameter(SpeechConstant.LANGUAGE, "zh_cn");// 设置语言区域mRecognizer.setParameter(SpeechConstant.ACCENT, "zh_cn");// 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理mRecognizer.setParameter(SpeechConstant.VAD_BOS, "4000");// 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音mRecognizer.setParameter(SpeechConstant.VAD_EOS, vadEos);// 设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点mRecognizer.setParameter(SpeechConstant.ASR_PTT, asrPtt);mRecognizer.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");//是否保存识别语音文件mRecognizer.setParameter(SpeechConstant.ASR_AUDIO_PATH, asrPath);//设置音频资源,通过写音频流方式(-1),如果通过Android自带的录音机录制音频方式(注释掉这一行)mRecognizer.setParameter(SpeechConstant.AUDIO_SOURCE, "-1");}//设置参数完成后,开始识别public void startRecognizer(File asrFile) {ret = mRecognizer.startListening(mRecognizerListener);if (ret != ErrorCode.SUCCESS) {mView.showTip("听写失败,错误码:" + ret);return;}if (asrFile == null) {return;}final byte[] audioData = FileUtils.readFile(asrFile);if (audioData != null) {mRecognizer.writeAudio(audioData, 0, audioData.length);mRecognizer.stopListening();} else {mRecognizer.cancel();LogUtil.e("read audiorecord file failed!");}}

监听识别结果:

 private RecognizerListener mRecognizerListener = new RecognizerListener() {@Override public void onBeginOfSpeech() {mView.showTip("开始说话");mSpeechResult.delete(0, mSpeechResult.length());}@Override public void onEndOfSpeech() {mView.showTip("结束说话");}@Override public void onResult(RecognizerResult results, boolean isLast) {final String result = JsonParser.parseIatResult(results.getResultString());mSpeechResult.append(result);//可在这打印结果 mSpeechResult.toString();}@Override public void onError(SpeechError error) {mView.showTip(error.getPlainDescription(true));}@Override public void onVolumeChanged(int volume, byte[] data) {mView.showTip("当前正在说话,音量大小:" + volume);}@Override public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {}};

FileUtils

public static byte[] readFile(File file) {FileInputStream fis = null;byte[] bytes = null;try {fis = new FileInputStream(file);bytes = new byte[fis.available()];fis.read(bytes);} catch (Exception e) {e.printStackTrace();} finally {if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}return bytes;}

注意事项:默认识别语音文件,且格式是WAV或PCM。如果想通过麦克风获取语音,注释 mRecognizer.setParameter(SpeechConstant.AUDIO_SOURCE, "-1")这一行,startRecognizer(null)传入参数为null即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62189.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音识别,将语音转换成文字

通常,我们在不想打字的时候,就会给别人发语音。但是如果你想把你说的一段话给 它转换成文字,该怎么操作呢?今天就来给大家分享一个技能,快速的将语音转换成 文字。无论是写文章,或者做会议记录,…

语音识别(利用python将语音转化为文字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、申请讯飞语音端口1.点击链接进入讯飞平台主页面2.在页面注册自己的个人账户3.申请语音端口4.查看自己的端口编码 二、python代码讲解1.代码如下&#xff08…

chatglm-6b_ptuning error:bash .sh,出现ModuleNotFoundError

文章目录 模型效果演示问题描述分析一分析二 ChatGLM-6B是一个由清华大学和智谱AI联合研发的开源对话语言模型。它是一个支持中英双语问答的对话系统,并在中文方面进行了特别的优化。 该模型基于General Language Model (GLM)架构,具有62亿参数。借助模型…

【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍

用于大型Transformer的8-bit矩阵乘法介绍 原文地址:A Gentle Introduction to 8-bit Matrix Multiplication for transformers at scale using transformers, accelerate and bitsandbytes 相关博客 【深度学习】【分布式训练】Collective通信操作及Pytorch示例 【自…

简单易懂------使用PyTorch实现Chatbot

本系列文章通过通俗易懂的方式介绍强化学习的基本概念,虽然语言通俗,但是内容依旧非常严谨性。文中用很多的公式,对数学公式头疼的读者可能会被吓住,但是如果读者一步一步follow下来,就会发现公式的推导非常自然&#…

Hugging Face Transformer:从原理到实战的全面指南

一、前言 前面我面介绍过ChatGPT的基本原理以及预训练大语言模型的发展史,我们知道ChatGPT和所有预训练大语言模型的核心是什么?其实就是 Transformer,Hugging Face 的火爆离不开他们开源的这个 Transformers 库。这个开源库里有数万个我们可…

[AI存储] NLP 和 AI: 数据存储在推动生成式 AI 工具中的作用

很少有技术现象像新一批生成式 AI 工具(如Dall-E和ChatGPT)那样迅速流行起来。似乎一夜之间,这些引人入胜的新应用正被各种各样的人用于不同的应用 – 从内容原创到邮件和报告撰写、软件开发、内容研究等等。 特别是ChatGPT,由于其…

微信小程序云开发实现一对一即时聊天,发送语音、文件、图片、朋友圈、添加好友等功能

点此源码获取 前几篇博文 前几篇文章实现了,利用云开发的即时通信demo做的仿照微信好友聊天。 本篇文章主要在前几篇的基础上进行的修改,实现 即时一对一聊天,群聊天,发送文件图片,发送语音,更换聊天背景…

微信小程序目前最新的授权登录接口-2021年10月份

微信小程序目前最新的授权登录接口-2021年10月份 效果图: 说明:首先我们需要在app.js里用云函数获取到openid,然后在用户点击登录的时候用获取到的openid去用户表里查询是否有该用户,如果没有就把用户信息写入数据库里的用户表,再…

微信小程序原生接入腾讯云im(单聊,列表,聊天界面,自定义消息,自动回复)

微信小程序原生接入腾讯云im(单聊,列表,聊天界面,自定义消息,自动回复) 发送图片语音消息传送→ 文章目录 1.项目需求 2.参考文档 3.效果图 4.初始化 集成SDK 5.登录 6.会话列表 7.聊天页面 8.遇到的问…

微信小程序接入腾讯云IM即时通讯(发送消息开发步骤)

微信小程序接入腾讯云IM即时通讯(聊天窗口) 1.效果图: 2.功能点 : 1.布局要分左右两边布局,如果是自己为发送消息方,都在右边,对方发送的消息在左边。 2.腾讯云返回的是时间戳,需…

uniapp小程序接入腾讯IM聊天

腾讯IM中创建项目 拿到AppID 与 密钥 下载demo 将debug 文件夹拖到自己项目中 在第一个js文件中填入自己项目的APPID 与密钥 下载(tim-wx-sdk 上传文件 的依赖 看项目所需 import TIM from tim-wx-sdk; import TIMUploadPlugin from tim-upload-plugin; let optio…

用最通俗易懂的语言告诉你什么是信息熵

图和公式都挂了,想看原文的小伙伴去公众号后台回复”信息熵”即可 假设有个考试作弊团伙,需要连续不断地向外传递4选1单选题的答案。直接传递ABCD的ascii码的话,每个答案需要8个bit的二进制编码,从传输的角度,这显然有…

外景黑纱婚纱照高级感十足

婚纱照不止有自然小清新(&还可以暗黑高级 看腻了千篇一律的白色婚纱礼服 炎追求个性、与众不同的仙女们不妨尝试一下黑色婚纱🖤 黑纱不一定只有酷和暗黑 也有法式赫本风的复古优雅 满满的氛围感和高级感 🎬 女生的拖尾黑裙神秘又优雅 …

福州一般拍一套婚纱照要多少钱

随着婚纱摄影行业发展以来,近几年选择婚纱照旅拍的准新人越来越多了。相信每一位新人对于这些都是第一次没有经验的,所以也不太清楚行情,不知道选择怎么样的套餐,那小编就来科普一下现在旅拍的行情,让你们在选择婚纱照…

晒一下我和老婆的婚纱照!

两人一起的 老婆单人的 老婆就是大名鼎鼎的晴天有雨啊! 我单人的

冬天拍婚纱照注意事项 拍出养眼婚纱照

寒冷的冬天来了,对于北方人就要迎接雪花了,在寒冷的冬季进行婚纱摄影,会美丽但是也会“冻人”哦!下面 南京婚纱摄影工作室给大家介绍冬天拍婚纱照注意事项,准新人们可以参考一下哦! 冬天拍婚纱照注意事项 拍出养眼婚纱照 婚纱照 冬…

国内唯美花海 新娘绝美婚纱照

每位新郎都希望有一位仙女般的妻子,新娘也都希望自己是花丛中的花仙子。一组浪漫唯美的花海婚纱照无疑是诠释新人们花仙子梦的最好渠道。下面 青岛摄影工作室 就来给大家盘点一下国内那些唯美的花海。 1、云南罗平油菜花 云南省的罗平。从每年的二月份开始就进入了油…

W ndoWS十p啥意思,婚纱照相册10P是什么意思?入册多少张最合适?

原标题:婚纱照相册10P是什么意思?入册多少张最合适? 在预定婚纱照时,都会谈及相册P数,尺寸大小等等一些相册信息,一般相册的页数有7、10、12、15、20p还有30p的,而我们常见就为10P,那么&#xf…