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

简介: 1),首先在官网下载相关jar包 2)自定义界面设计: R.layout.activity_main.xml main.

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; } }

 

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
8月前
|
人工智能 关系型数据库
私人定制的AI助理
通过简单的配置,能接触到AI领域的最新技术,这对是一个非常有意思的活动
47 5
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
押注数字人,百度、科大讯飞“短兵相接”
公众对数字人的认知上升到了一个新的台阶。
69 0
|
7月前
|
人工智能 监控 算法
AI智能机器人好用吗
ai电销系统是人工智能时代商业发展的必然条件,也是企业寻求市场突破的重要起点。智能云电子营销系统结合大数据、人工智能等技术,可以快速的帮助企业找到有意向的客户,然后使用智能算法匹配产品和服务,是电子营销人员提高营销效率和订单率的核心设备。 ai电销机器人是非常好用的,它与传统的销售模式相比较它具有强大的数据算法进行优化配送,并且通过预测、配送、预览过滤掉无效的号码,从而提高接入率,进而可以为销售人员节省每一份每一秒,提高销售的工作效率。 ai电销机器人有哪些好处 1、智能机能代替一部分的人工工作,但是智能电销系统主要是针对客户的初步筛选设计的,也是为了了解客户的需求及意向,为了达
|
12月前
|
新零售 人工智能 自动驾驶
前沿科技 | 与人共鸣,让AI发声
编者按: 声音是塑造一个有血有肉人物的关键,声音和视觉之间的不一致会破坏用户身临其境的体验。但以目前技术发展来看,声音质量还不能实时与视觉质量相匹配。尽管如此,许多科技公司和平台开发者努力提供可用的最新解决方案,使虚拟形象能够在展示场景中实时按需生成自然且有人类情感的声音。 本文约2036字,建议阅读时间6分钟。
131 0
|
12月前
|
达摩院
达摩院语音实验室祝你新年快乐!
达摩院语音实验室祝你新年快乐!
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
国产AI大模型酣战,科大讯飞打响“智慧涌现”第一枪
AI大模型技术需求也随之水涨船高,成为科技企业重点关注的方向。
148 0
|
数据采集 安全
讯飞叶菜病虫害图像识别挑战赛
讯飞叶菜病虫害图像识别挑战赛
267 0
讯飞叶菜病虫害图像识别挑战赛
|
语音技术 开发工具 图形学
Unity 接入科大讯飞语音识别及语音合成
Unity 接入科大讯飞语音识别及语音合成
1032 1
Unity 接入科大讯飞语音识别及语音合成
|
人工智能 自然语言处理 搜索推荐
科大讯飞也推AI智能硬件,K12“知识图谱型”AI教育“真香”?
一次性推出5款新硬件产品,公众认知中一向ToB的“明星企业”科大讯飞前两天的发布会让人“意外”,ToC转型似乎说来就来。
科大讯飞也推AI智能硬件,K12“知识图谱型”AI教育“真香”?
|
机器学习/深度学习 人工智能 自然语言处理