android语音识别之科大讯飞语音API的使用

Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测试,发现很多真机并不能使用哪个sample,在网上查找了一下原因,大部分是因为开发者在刷机的时候,大部分的ROM都阉割掉了语音识别和语音合成TTS(Text To Speech)部分,所以运行sample的时候会有异常抛出。

如果不用google提供的语音识别,要怎么实现语音识别喃?科大讯飞的语音API就可以到,这里是关于它的官网介绍:http://dev.voicecloud.cn/developer.php?vt=1 下面我就用一个简单的实例来介绍一下它基本的使用

首先做一个简单的界面

上面的TextView显示识别的内容,三个Button分别为语音识别,语音合成并朗读和语音后台朗读三个功能

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/et"android:layout_width="fill_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/bt_recognize"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Recognize" /><Buttonandroid:id="@+id/bt_speek"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Speek" /><Buttonandroid:id="@+id/bt_speek_bg"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Speek-Background" /></LinearLayout>

Activity代码如下:

package sina.CreAmazing.voice;import java.util.ArrayList;import com.iflytek.speech.RecognizerResult;
import com.iflytek.speech.SpeechError;
import com.iflytek.speech.SynthesizerPlayer;
import com.iflytek.ui.RecognizerDialog;
import com.iflytek.ui.RecognizerDialogListener;
import com.iflytek.ui.SynthesizerDialog;
import com.iflytek.ui.SynthesizerDialogListener;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class Voice1Activity extends Activity {/** Called when the activity is first created. */// 声明控件private EditText et;private Button bt1;private Button bt2;private Button bt3;//全局只设一个String,因为String为final类型,这样做节省内存String text = "";private static final String APPID = "appid=4f2d3a06";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bt1 = (Button) findViewById(R.id.bt_recognize);bt2 = (Button) findViewById(R.id.bt_speek);bt3 = (Button) findViewById(R.id.bt_speek_bg);et = (EditText) findViewById(R.id.et);// 初始化监听器initListener();}private void initListener() {bt1.setOnClickListener(myListener);bt2.setOnClickListener(myListener);bt3.setOnClickListener(myListener);}OnClickListener myListener = new OnClickListener() {@Overridepublic void onClick(View v) {// 根据不同View的id调用不同方法switch (v.getId()) {case R.id.bt_recognize:// 这是语言识别部分,最重要的实例化一个// RecognizerDialog并把你在官方网站申请的appid填入进去,非法id不能进行识别RecognizerDialog isrDialog = new RecognizerDialog(Voice1Activity.this, APPID);/** 设置引擎目前支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索* ”video”:视频音乐搜索 ”asr”:命令词识别*/isrDialog.setEngine("sms", null, null);isrDialog.setListener(recoListener);isrDialog.show();break;case R.id.bt_speek:// 这是语言合成部分 同样需要实例化一个SynthesizerDialog ,并输入appidSynthesizerDialog syn = new SynthesizerDialog(Voice1Activity.this, APPID);syn.setListener(new SynthesizerDialogListener() {@Overridepublic void onEnd(SpeechError arg0) {}});// 根据EditText里的内容实现语音合成syn.setText(et.getText().toString(), null);syn.show();break;case R.id.bt_speek_bg:// 这是后台朗读,实例化一个SynthesizerPlayerSynthesizerPlayer player = SynthesizerPlayer.createSynthesizerPlayer(Voice1Activity.this, APPID);// 设置语音朗读者,可以根据需要设置男女朗读,具体请看api文档和官方论坛player.setVoiceName("vivixiaomei");player.playText(et.getText().toString(), "ent=vivi21,bft=5",null);break;default:break;}}};// 语言识别监听器,有两个方法RecognizerDialogListener recoListener = new RecognizerDialogListener() {@Overridepublic void onResults(ArrayList<RecognizerResult> results,boolean isLast) {// 服务器识别完成后会返回集合,我们这里就只得到最匹配的那一项text += results.get(0).text;System.out.println(text);}@Overridepublic void onEnd(SpeechError error) {if (error == null) {// 完成后就把结果显示在EditText上et.setText(text);}}};}

最后别忘了把科大讯飞的jar包引入工程的buildPath里面。

运行画面:

语音识别:

语音合成:

其实功能还不止这些,还有数据上传,关键字识别,获取上行下行流量,设置采样频率设置发音人,语速,音量等等等,如果感兴趣可以自己深入研究。

下一篇我会尝试着通过语言简单的控制手机,使语音识别功能更加丰富



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

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

相关文章

如何调教ChatGPT,让它成为生产力工具

我希望您充当 Graphviz DOT 生成器&#xff0c;创建有意义的图表的专家。该图应该至少有 n 个节点&#xff08;我在我的输入中通过写入 [n] 来指定 n&#xff0c;10 是默认值&#xff09;并且是给定输入的准确和复杂的表示。每个节点都由一个数字索引以减少输出的大小&#xff…

3月18日英超两场足球比赛分析推荐

不知不觉文章分析的场次推荐已经4连红&#xff0c;昨日文章写的纽卡没有问题&#xff0c;扫盘中错的两场实属无奈&#xff0c;比勒费前半场领先2球优势被最后一分钟点球扳平。海牙带球入场结果后半场乏力被打穿&#xff01;球场上就是这么变化莫测&#xff0c;让人悲伤让人疯狂…

足球胜平负数据这样分析竞猜准确率超高,你敢相信吗?

作为足球爱好者和竞猜玩家&#xff0c;使用一款好用的工具软件能够帮助我们更全面地分析比赛数据和情况&#xff0c; 提高我们的赛事预测准确率。因此&#xff0c;选择一款最好用的足球胜平负竞猜分析工具软件是我们必须要做的事情。下面我为大家介绍一款非常好用的数据分析工具…

周鸿祎自传

​ 1.那共通之处就是——人们如何在没有前车之鉴的判例中进行决策&#xff0c;又如何在泰山压顶般的压力之下做出最优的判断。对于创业者来说&#xff0c;每一天都是压力测试。&#xff0d;&#xff0d;&#xff0d;&#xff0d;决策 2.真正的勇敢&#xff0c;并非骁勇善战&am…

马斯克回应多年前嘲笑比亚迪;360 周鸿祎训练数字人代替演讲;微软发布自己的 Linux | 极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

史上最全最详细的多语言调用 3.5 Turbo 的 API 教程(持续更新中)

3.5 Turbo 模型是 Chat 所使用的模型&#xff0c;现 OpenAI 已正式开放 Chat 的 API 能力供广大开发者使用&#xff0c;它可以提供超高准确性、可靠性和可扩展性&#xff0c;让机器学习和自然语言处理的开发者以极低的成本获取精准的结果。 那么我们如何通过API 的方式调用 3.…

寻找新奇有趣的AI工具合集,一个网站就够了

随着ChatGpt横空出世&#xff0c;越来越多的AI工具涌现出来&#xff0c;利用这些工具&#xff0c;我们就可以玩转智能办公&#xff0c;尽享高效快捷。那么&#xff0c;我们从哪里可以即时获取到这些产品的信息呢&#xff1f;又如何调兵遣将&#xff0c;化种类繁多的AI工具为各种…

云炬Android开发笔记 17商品详情功能开发

阅读目录 1.商品详情ui框架设计 1.1 自定义圆形控件 1.2 底部栏的布局 1.3 整体布局 2.商品详情UI-MD风格伸缩渐变效果实现 2.1 ui的绑定 2.2 服务器中商品详情页的数据的取出 3.商品详情页的中间信息的完善 4. 商品详情页下部滑动Tab页面的实现 4.2 填充的ImageDele…

chatgpt赋能python:Python怎么断行-让代码更易读

Python怎么断行 - 让代码更易读 大多数Python程序员都知道&#xff0c;代码可读性非常重要。好的代码应该易于阅读和理解&#xff0c;而不是让人困惑和痛苦。 然而&#xff0c;我们经常会发现一些Python代码在一行中拥挤着多个表达式、长变量名混杂其中&#xff0c;让人感到相…

如何利用citespace分析cnki里的文献——(1)导入数据

##&#xff08;一&#xff09;在cnki中导出数据 按照自己的需要进行检索&#xff0c;选择需要导出的文献题录&#xff08;最多一次可选择500个&#xff09;&#xff0c;导出格式选为“Refworks”&#xff0c;点击“导出”&#xff0c;导出题录的txt&#xff0c;注意&#xff1a…

研究方法|用CiteSpace进行科学文献可视化分析

研究方法|用CiteSpace进行科学文献可视化分析 CiteSpace是什么&#xff1f; 简单来说&#xff0c;它一款通过将国内外文献进行可视化分析来帮助你了解一门学科前世今生的软件。 面对成千上万篇的文献&#xff0c;怎样才能快速锁定自己最感兴趣的主题及科学文献&#xff0c;找…

❤️这两个文献神器绝了!一张图谱梳理文献脉络

文章目录 引言神器1&#xff1a;connected papers关联文献图谱过往工作衍生工作 神器2&#xff1a;semantic scholar文献检索被引情况Semantic Reader阅读器 小结 引言 每当我们接触一个新技术领域时&#xff0c;往往需要借助大量的文献调研&#xff0c;来梳理研究现状。 尤其…

论文写作——origin画图

一 origin的安装 详见下面网址&#xff0c;内涵下载路径和破解方法。 http://www.ddooo.com/softdown/51005.htm 1. 下载origin 网址&#xff1a;https://thepcgo.com/origin-pro-8-0-free-download/ 2.下载破解相关压缩包 链接&#xff1a;https://pan.baidu.com/s/1LwA…

Endnote参考文献分享与导入

Endnote参考文献分享与导入/转移 文章发给老师如何将参考文献一同发送 软件版本为X8 一、分享 首先找到Endnote library的位置&#xff0c;将两个文件【一个是后缀为enl的数据库文件和另一个是.data文件夹】一起复制到一个文件夹&#xff0c;压缩通过网盘、U盘等方式发送给接…

名帖376 祝允明 草书《滕王阁序并诗》

《中国书法名帖目录》 祝允明&#xff0c;号枝山&#xff0c;明长洲(今苏州)人。弘治五年(1492)举人&#xff0c;天资卓越&#xff0c;五岁能作径尺大字&#xff1a;九岁能诗&#xff0c;写文章有奇气&#xff0c;且才思敏捷&#xff0c;与唐寅、文徵明、徐祯卿号称“吴中四才…

名帖249 文徵明 行书《滕王阁序》

《中国书法名帖目录》 《滕王阁序》是王勃创作的一篇骈文&#xff0c;素有“千古第一骈文”之名&#xff0c;无论从内容上还是从形式上看&#xff0c;都代表了中国骈文的最高成就。 曾有人问如何写出《滕王阁序》这样的作品&#xff0c;殊不知《滕王阁序》这样的雄构不是写出…

《滕王阁序》

滕王阁序 唐 王勃 南昌故郡&#xff0c;洪都新府&#xff0c;星分翼轸&#xff0c;地接衡庐&#xff0c;襟三江而带五湖&#xff0c;控蛮荆而引瓯越。物华天宝&#xff0c;龙光射斗牛之墟&#xff1b;人杰地灵&#xff0c;徐孺下陈蕃之榻。雄州雾列&#xff0c;俊彩星驰&#x…

chatgpt赋能python:Python输出波形:让你的数据可视化更轻松

Python输出波形&#xff1a;让你的数据可视化更轻松 随着数据获取和处理的不断深入&#xff0c;数据可视化正在变得越来越重要。而Python是一种流行的、易学习的、高级编程语言&#xff0c;广泛用于数据科学、统计学、机器学习等领域。Python的可视化库也非常强大&#xff0c;…

chatgpt赋能python:Python词云包:让数据可视化更加生动形象

Python词云包&#xff1a;让数据可视化更加生动形象 在当前大数据时代下&#xff0c;如何让海量数据更加生动形象展示&#xff0c;成为了数据科学家们面临的一个重要问题。数据可视化是其中的一种解决方案&#xff0c;词云作为数据可视化的一种手段&#xff0c;是很受欢迎的。…

chatgpt赋能python:一、Python在数据可视化中的应用

一、Python在数据可视化中的应用 Python是一种功能强大的编程语言&#xff0c;早已成为数据科学家和分析师的首选语言。数据可视化对于从数据中汲取信息和传达想法来说至关重要。Python也是数据可视化的理想工具之一。Python提供了许多强大的库&#xff0c;其中包括了一些流行…