完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的自动化中来!
android是谷歌推出的嵌入式操作系统,携广泛的根基与基础。最近一个中关村的一个CEO朋友送了一个摩托罗拉安卓手机,想玩玩语音技术过瘾。如何用安卓开发语音技术应用呢,自己下载最新的SDK,android-2.1_r01-windows, 废话少说,看看老夫一展身手,虽然我自己精通C/C++,.Net,但起java也是一点都免玩的,老夫我的手机提前安装了 Linux只开放语音识别引擎simon,自己已经完全移植成功了,中文识别率非常高比 我差一点Linux开源语音朗读引擎,我自己已经完全移植成功了,英文读比于科大差飞一点 先简单介绍下语音朗读技术 详细代码见注释 [java]查看普通副本 导入 android.app.Activity; 导入 android.os.Bundle; 导入 android.speech.tts.TextToSpeech; 导入 android.util.Log; 导入 android.view.View; 导入 android.widget.Button; 导入 com.example.android.apis.R; 导入 java.util.Locale; 导入 java.util.Random; 公共类 TextToSpeechActivity 扩展 Activity 实现 TextToSpeech.OnInitListener { private static final String TAG =“TextToSpeech”; 私人 TextToSpeech mTts; 私人按钮 magainButton; @覆盖 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.text_to_speech); //初始化文本到语音。这是一个异步操作。 //OnInitListener(第二个参数)被调用初始化后完成。 mTts = new TextToSpeech(这个, this //创建接口初始化 ); //点击按钮的布局。 //这将被启用后的TTS引擎的初始化 mAgainButton = (Button) findViewById(R.id.again_button); magainButton.setOnClickListener(new View.OnClickListener() { public void onClick(查看 v) { 问好(); } }); } public void onDestroy() { //删除对象退出 如果(mTts != null) { mTts.stop(); mTts.shutdown(); } super.onDestroy(); } // 实现TextToSpeech.OnInitListener public void onInit(int status){ // 返回成功或者失败 如果(状态 == TextToSpeech.SUCCESS) { //设置首选语言为美国英语。 //注意语言可能无法使用,其结果将有这一点。 int 结果 = mTts.setLanguage(Locale.US); // 定义结果 mTts.setLanguage(Locale.FRANCE); if (结果 == TextToSpeech.LANG_MISSING_DATA || 结果 == TextToSpeech.LANG_NOT_SUPPORTED) { // 语言不受支持 Log.e(TAG,“语言不可用。”); } 别的 { //检查其他可能的结果代码文件。 //例如,语言可能是可以的语言环境,但不是指定的国家和变体。 //TTS引擎已成功初始化。 //允许用户按下按钮的应用程序热点。 mAgainButton.setEnabled(true); // 开始调用 问好(); } } 别的 { // 初始化失败。 Log.e(TAG,“无法初始化TextToSpeech。”); } } private static final Random RANDOM = new Random(); private static final String[] HELLOS = { “你好”, “银城”, “山东大学”, “微软”, “谷歌很棒”, “我叫银城!” }; 私有无效 sayHello() { // 随机选择朗读文本 int helloLength = HELLOS.length; String hello = HELLOS[RANDOM.nextInt(helloLength)]; mTts.speak(你好, TextToSpeech.QUEUE_FLUSH, 空值); } } android语音识别是通过一个Intent的动作动作来完成的。主要有以下两种模式: ACTION_RECOGNIZE_SPEECH:一般语音识别,主要用于语音控制。 ACTION_WEB_SEARCH:网络搜索识别,主要用于语音搜索我们先来分析下语音控制, [java]查看普通副本 导入 android.app.Activity; 导入 android.content.Intent; 导入 android.content.pm.PackageManager; 导入 android.content.pm.ResolveInfo; 导入 android.os.Bundle; 导入 android.speech.RecognizerIntent; 导入 android.view.View; 导入 android.view.View.OnClickListener; 导入 android.widget.ArrayAdapter; 导入 android.widget.Button; 导入 android.widget.ListView; 导入 java.util.ArrayList; 导入 java.util.List; 公共类 VoiceRecognition 扩展 Activity 实现 OnClickListener { 私有静态最终 int VOICE_RECOGNITION_REQUEST_CODE = 1234; 私人 ListView mList; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.voice_recognition); Button speakButton = (Button) findViewById(R.id.btn_speak); mList = (ListView) findViewById(R.id.list); // 检查是否有语音识别活动 PackageManager pm = getPackageManager(); List《ResolveInfo》活动= pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 如果(活动大小()!= 0) { speakButton.setOnClickListener(this); } 别的 { speakButton.setEnabled(假); speakButton.setText(“识别器不存在”); } } public void onClick(查看v) { 如果(v.getId() == R.id.btn_speak) { startVoiceRecognitionActivity(); } } private void startVoiceRecognitionActivity() { //借助Intent传递语音识别的模式 意图意图=新意图(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //语言模式和自由形式的语音识别 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //提示语音开始 intent.putExtra(RecognizerIntent.EXTRA_PROMPT,“语音识别演示”); //开始语音识别 startActivityForResult(意图,VOICE_RECOGNITION_REQUEST_CODE); } //当语音结束时的调用函数onActivityResult @覆盖 protected void onActivityResult(int requestCode,int resultCode,Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // 取得语音结果,加入一个选择判断就可以语音控制 ArrayList《String》匹配 = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); mList.setAdapter(new ArrayAdapter《String》(this,android.R.layout.simple_list_item_1,匹配)); } super.onActivityResult(requestCode,resultCode,data); } } 然后我们来亲自实践一个语音搜索,创建一个网页视图来进行搜索,就是完整的语音搜索了,结合上述的语音合成,那平原牛的, [java] 查看普通副本 导入 android.app.Activity; 导入 android.content.Intent; 导入 android.content.pm.PackageManager; 导入 android.content.pm.ResolveInfo; 导入 android.os.Bundle; 导入 android.speech.RecognizerIntent; 导入 android.view.View; 导入 android.view.View.OnClickListener; 导入 android.widget.ArrayAdapter; 导入 android.widget.Button; 导入 android.widget.ListView; 导入 java.util.ArrayList; 导入 java.util.List; 公共类 VoiceRecognition 扩展 Activity 实现 OnClickListener { 私有静态最终 int VOICE_RECOGNITION_REQUEST_CODE = 1234; 私人 ListView mList; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.voice_recognition); 按钮 speakButton = (Button) findViewById(R.id.btn_speak); mList = (ListView) findViewById(R.id.list); // 检查是否有语音识别活动 PackageManager pm = getPackageManager(); List 如果(活动。大小()!= 0) { speakButton.setOnClickListener(this); } 别的 { speakButton.setEnabled(false); speakButton.setText("识别器不存在"); } } 公共无效 onClick(查看 v) { if (v.getId() == R.id.btn_speak) { startVoiceRecognitionActivity(); } } 私有无效 startVoiceRecognitionActivity() { //借助Intent传递语音识别的模式,指定语音搜索识别模式 意图意图=新意图(RecognizerIntent.ACTION_WEB_SEARCH); //语言模式和自由形式的语音识别 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //提示语音开始 intent.putExtra(RecognizerIntent.EXTRA_PROMPT,“语音识别演示”); //开始语音识别 startActivityForResult(意图,VOICE_RECOGNITION_REQUEST_CODE); } //当语音结束时的调用函数onActivityResult @覆盖 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // 取得语音结果,加入一个选择判断就可以语音控制 ArrayList mList.setAdapter(new ArrayAdapter //进行访问网页的语音搜索,可以结合上述例子实现语音合成朗读,他妈的,太爽了哈 WebView webView = (WebView) findViewById(R.id.webView); // 配置浏览器,可以支持JavaScript WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 清除浏览器查看 webView.clearCache(true); // 指定浏览器地址,就是googlesearch关键词的访问格式,检索语音结果 webView.loadUrl("http://www.google.com.hk/search?hl=zh-CN&source=hp&q="+data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)+"&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai ="); // 指定浏览需要解析的html数据,可以结合语音朗读数据 // webView.loadData("webabcd", "text/html" , "utf-8"); } super.onActivityResult(requestCode, resultCode, data); } } |
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:19 , Processed in 0.808813 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号