教你实现语音识别(基于科大讯飞)

1),首先在官网下载相关jar包

2)自定义界面设计:

R.layout.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请先到餐厅预定选择店铺"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+searchdialog/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@color/transparent"
            android:padding="10dp"
            android:src="@android:drawable/ic_btn_speak_now" />

        <EditText
            android:id="@+searchdialog/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:padding="10dp" >

            <requestFocus />
        </EditText>
    </LinearLayout>

</LinearLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/content" />

</LinearLayout>

2) 逻辑实现

首先添加相关jar包以及so文件,如下

权限添加:

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

代码实现:

package com.wangfubin.xunfenyuyin;

import java.util.ArrayList;

import com.iflytek.speech.RecognizerResult;
import com.iflytek.speech.SpeechError;
import com.iflytek.ui.RecognizerDialog;
import com.iflytek.ui.RecognizerDialogListener;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

    private EditText setedit;
    private ImageButton yuyinButton;
    private Button button1;
    private String textString = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                LinearLayout LinearLayout1 = (LinearLayout) getLayoutInflater()
                        .inflate(R.layout.activity_main, null);
                setedit = (EditText) LinearLayout1.findViewById(R.searchdialog.editText1);
                yuyinButton = (ImageButton) LinearLayout1.findViewById(R.searchdialog.imageButton1);
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("请输入查询关键字")
                .setIcon(android.R.drawable.ic_dialog_info)
                .setView(LinearLayout1)
                .setPositiveButton("取消", null)
                .setNegativeButton("确定",
                        new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0,
                            int arg1) {
                        /*// 数据获取
                        searchtext(setedit.getText().toString());*/
                        Toast.makeText(MainActivity.this, setedit.getText().toString(), Toast.LENGTH_LONG).show();
                    }
                }).show();
                yuyinButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        showDialog(1);
                    }
                });

            }
        });

    }
    /**
     * 语音查询
     */
    @Override
    protected Dialog onCreateDialog(int id) {
        RecognizerDialog recognizerDialog = new RecognizerDialog(
                MainActivity.this, "appid=5132fe14");// 这里应该写从科大讯飞申请到的appid
        recognizerDialog.setEngine("sms", null, null);
        recognizerDialog.setListener(new RecognizerDialogListener() {
            @Override
            public void onResults(ArrayList<RecognizerResult> results,
                    boolean arg1) {
                for (int i = 0; i < results.size(); i++) {
                    textString += results.get(i).text;
                }
            }

            @Override
            public void onEnd(SpeechError arg0) {
                // Toast.makeText(MainActivity.this, textString, 1).show();
                setedit.setText(textString.substring(0, textString.length() - 1));                textString ="";
            }
        });
        return recognizerDialog;
    }
}

时间: 2024-10-11 12:30:57

教你实现语音识别(基于科大讯飞)的相关文章

转:基于科大讯飞语音API语音识别开发详解

最近项目需要用到android语音识别,立马就想到科大讯飞,结合官方实例及阅读API文档,初步的完成了Android语音识别,下面是实现过程实录. 一.准备工作 1.你需要android手机应用开发基础 2.科大讯飞语音识别SDK android版 3.科大讯飞语音识别开发API文档 4.android手机 关于科大讯飞SDK及API文档,请到科大语音官网下载:http://open.voicecloud.cn/ 当然SDK和API有多个版本可选,按照你的需要下载,其次,下载需要填写资料申请注册

基于科大讯飞语音云windows平台开发

前记: 前段时间公司没事干,突发奇想想做一个语音识别系统,看起来应该很简单的,但做起来却是各种问题,这个对电气毕业的我,却是挺为难的.谷姐已经离我们而去,感谢度娘,感谢CSDN各位大神,好歹也做的是那么回事了,虽然还是不好用,但基本功能实现了. 该软件使用VS2008C++/CLR开发,由于科大讯飞提供的是C的API接口,结果到这边就是各种不兼容,CLR是基于托管堆运行的,而这个API有是非托管堆的,使用了各种指针,原本打算使用C#来做,最后门外汉的我也没能做到C#和C指针完美结合,真怀恋单片机

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

&lt;交流贴&gt;android语音识别之科大讯飞语音API的使用

因为最近在研究语音识别,所以借鉴了一下CreAmazing网友的帖子 Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测试,发现很多真机并不能使用哪个sample,在网上查找了一下原因,大部分是因为开发者在刷机的时候,大部分的ROM都阉割掉了语音识别和语音合成TTS(Text To Speech)部分,所以运行sample的时候会有异常抛出. 如果不用google提供的语音识别,要怎么实现语音识别喃?科大讯飞的语音API

百度语音识别vs科大讯飞语音识别

一.结果 从笔者试验的结果来看,科大讯飞的语音识别技术远超百度语音识别 二.横向对比   科大讯飞语音识别 百度语音识别 费用 各功能的前5小时免费 全程免费 转换精准率 非常高 比较低 linux SDK c c++ 原文地址:https://www.cnblogs.com/dakewei/p/9739135.html

手把手教你做爬虫---基于NodeJs

前言: 趁着北京今儿天气格外的蓝,我觉得我得干点什么,于是乎,卷起袖子,整理一下最近做爬虫的那些事儿. 目标:爬取北京大学软件与微电子学院的所有新闻,并将内容及图片存储到本地. 设计思路:经过对北京大学软件与微电子学院的新闻网址http://www.ss.pku.edu.cn/index.php/newscenter/news/内容及网页格式的分析,我发现了这样一个规律:在每篇文章中,都会有下一篇文章url的链接.所以,我的做法是:给定一个初始(最新的)网页的url,如http://www.ss

集成科大讯飞语音识别接口项目分享

语音识别技术科大讯飞的识别精度真的是数一数二,像某度之类恶心到家的狗屎,充其量就是个摆设,下面介绍一下科大讯飞的语音集成. 1.到科大讯飞官网 http://www.xfyun.cn/ 注册账号和创建应用并获取appkey,然后下载Demo和SDK,这些步骤都与三方接口的接入类似. 2.运行一下Demo,先试试效果,看语音识别功能是否有效,先试试手,检验一下识别精度,是否满足要求. 3.根据Demo来集成相对应的功能:     A.首先拷贝SDK,在Demo或者下载下来的开源项目里找到SDK,M

不会俄语的他闯荡世界杯:科大讯飞这样铸造秘密武器

各位天台上的朋友,这几天过的好嘛? 据说这届世界杯,是个土豪变生蚝的神秘节日,各路强队的诡异表现已经惹得天怒人怨.票圈有朋友表示,早知道输成这样,还不如直接花钱去现场看世界杯呢,好歹剩一个心情美丽. 不过吧,貌似直接去现场也不仅是经费的问题. 去俄罗斯旅行,对于中国游客来说一直都不那么容易.饮食和服务的差异固然存在,全俄语环境也让适应前往英语国家的国人束手无策. 可是今年好像有点不同,一些中国铁杆球迷,今天正在完全不会俄语的状态下,依然在战斗民族的地盘享受着宝贵的世界杯.仅仅做了很少的准备,中国

基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录

原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍到eclipse无法比拟,此款ide理解上下文是一等一的,不用什么jquery插件,extjs插件,都可以实现全智能的代码提示.速度什么的都比myeclipse快.而且IDEA提供了android支持struts spring hibernate 支持.下面,我讲教大家完成一个基于全注解的Spirn