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

简介: 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; } }

 

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
讯飞星火大模型:AI语言模型的巅峰之作
今年,我们不得不提的一个热门话题就是ChatGPT,这是一款基于语言模型的人机对话系统。它在工作和生活中给我们带来了极大的便利。作为一名从事IT行业的人,我深切体会到了它在技术和文本处理方面的重要性。
313 0
讯飞星火大模型:AI语言模型的巅峰之作
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AppFlow:玩转科大讯飞星火大模型
讯飞大模型是科大讯飞开发的先进人工智能系统,利用深度学习和自然语言处理技术,提供高效准确的语言理解与生成能力,在语音识别、语义理解、机器翻译及智能对话等领域表现出色。AppFlow全面支持该模型,并提供公共配置模版,用户只需填写简单参数即可在钉钉群中配置讯飞模型机器人。
|
算法 程序员 测试技术
|
机器学习/深度学习 人工智能 自然语言处理
押注数字人,百度、科大讯飞“短兵相接”
公众对数字人的认知上升到了一个新的台阶。
96 0
|
10月前
|
自然语言处理 Java API
对接科大讯飞NLP
对接科大讯飞NLP
58 0
|
机器学习/深度学习 人工智能 自然语言处理
2022科大讯飞AI开发者大赛,来了!
6月9日,第四届(2018~2022)科大讯飞AI开发者大赛,正式启动! 科大讯飞联合优质企业、知名高校、融投资机构等53家合作伙伴, 围绕十大新兴产业开启算法、应用、编程赛、虚拟形象选拔、辩论赛、创意集市创意赛等108个赛道方向,覆盖了智能语音、视觉、自然语言、图文识别等人工智能热门技术,涵盖了元宇宙、农业养殖、遗址文化、生物与环保、医疗健康、地理遥感、企业数字化、智能家居、电商销售等多领域。
|
机器学习/深度学习 人工智能 自然语言处理
国产AI大模型酣战,科大讯飞打响“智慧涌现”第一枪
AI大模型技术需求也随之水涨船高,成为科技企业重点关注的方向。
196 0
|
数据采集 安全
讯飞叶菜病虫害图像识别挑战赛
讯飞叶菜病虫害图像识别挑战赛
314 0
讯飞叶菜病虫害图像识别挑战赛
|
语音技术 开发工具 图形学
Unity 接入科大讯飞语音识别及语音合成
Unity 接入科大讯飞语音识别及语音合成
1263 1
Unity 接入科大讯飞语音识别及语音合成
|
机器人 Java 开发工具
讯飞AIUI智能机器人1
讯飞AIUI智能机器人1
139 0
讯飞AIUI智能机器人1
下一篇
无影云桌面