讯飞语音识别Android-Demo

import java.io.UnsupportedEncodingException; 

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; 

import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.LexiconListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechListener;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.util.ContactManager.ContactListener;
import com.iflytek.cloud.util.UserWords; 

public class MainActivity extends Activity implements OnClickListener { 

    private static String TAG = "IatDemo";
    // 语音听写对象
    private SpeechRecognizer mIat;
    // 听写结果内容
    private EditText mResultText;
    // 用户词表下载结果
    private String mDownloadResult = ""; 

    private Toast mToast; 

    private int ret; 

    private Button startRecording; 

    private String voiceResult = ""; 

    private TextView text_result; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mIat = SpeechRecognizer.createRecognizer(this, mInitListener); 

        mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
        text_result = (TextView) this.findViewById(R.id.text_result);
        startRecording = (Button) this.findViewById(R.id.start_recording);
        startRecording.setOnClickListener(this);
    } 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    } 

    public void getVoice() {
        SpeechUtility.createUtility(MainActivity.this, "appid=540593c3");
        // 设置参数
        setParam();
        // 不显示听写对话框
        ret = mIat.startListening(recognizerListener); 

    } 

    public void setParam() { 

        mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); 

        // 设置语音前端点
        mIat.setParameter(SpeechConstant.VAD_BOS, "4000");
        // 设置语音后端点
        mIat.setParameter(SpeechConstant.VAD_EOS, "1000");
        // 设置标点符号
        mIat.setParameter(SpeechConstant.ASR_PTT, "1");
        // 设置音频保存路径
        mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/xunfei");
    } 

    /**
     * 初始化监听器。
     */
    private InitListener mInitListener = new InitListener() { 

        @Override
        public void onInit(int code) {
            Log.d(TAG, "SpeechRecognizer init() code = " + code);
            if (code == ErrorCode.SUCCESS) {
                Toast.makeText(MainActivity.this, "init success", 0).show();
            }
        }
    }; 

    /**
     * 用户词表下载监听器。
     */
    private SpeechListener downloadlistener = new SpeechListener() { 

        @Override
        public void onData(byte[] data) {
            try {
                if (data != null && data.length > 1)
                    mDownloadResult = new String(data, "utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } 

        } 

        @Override
        public void onCompleted(SpeechError error) {
            if (error != null) { 

            } else if (TextUtils.isEmpty(mDownloadResult)) { 

            } else {
                mResultText.setText("");
                UserWords userwords = new UserWords(mDownloadResult.toString());
                if (userwords == null || userwords.getKeys() == null) { 

                    return;
                }
                for (String key : userwords.getKeys()) {
                    mResultText.append(key + ":");
                    for (String word : userwords.getWords(key)) {
                        mResultText.append(word + ",");
                    }
                    mResultText.append("\n");
                } 

            }
        } 

        @Override
        public void onEvent(int eventType, Bundle params) {
        } 

    }; 

    /**
     * 听写监听器。
     */
    private RecognizerListener recognizerListener = new RecognizerListener() { 

        @Override
        public void onBeginOfSpeech() {
            Toast.makeText(MainActivity.this, "begin speech", 0).show();
        } 

        @Override
        public void onError(SpeechError error) {
            Toast.makeText(MainActivity.this, error.getErrorDescription(), 0).show();
        } 

        @Override
        public void onEndOfSpeech() {
            Toast.makeText(MainActivity.this, "end", 0).show();
        } 

        @Override
        public void onEvent(int eventType, int arg1, int arg2, String msg) {
            Toast.makeText(MainActivity.this, "on event", 0).show();
        } 

        @Override
        public void onResult(RecognizerResult results, boolean isLast) {
            String text = JsonParser.parseIatResult(results.getResultString());
            voiceResult = voiceResult + text;
            if (isLast) {
                text_result.setText(voiceResult);
            }
        } 

        @Override
        public void onVolumeChanged(int volume) { 

        } 

    }; 

    @Override
    protected void onResume() {
        // SpeechUtility.getUtility().checkServiceInstalled();
        super.onResume();
    } 

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.start_recording:
            getVoice();
            break;
        }
    } 

} 

时间: 2024-10-06 06:39:41

讯飞语音识别Android-Demo的相关文章

android 讯飞语音识别(离线)注意事项

讯飞语音识别:使用注意事项:mainfest.xml中一定要记得权限写进去21001:我的情况是没有写SpeechApp类,并且需要在application中注册:20005:无匹配结果23300:本地引擎错误,,我的问题是在于语法错误,少了一个分号,,,尼玛,调试好久才找到,而且不会有提示. 一般情况下引擎错误的原因: 1.java代码检查你的语法文件路径.语法ID等相关配置: 2.语法文件语法是否正确,可能多了分号,少了分号,等等,必须严格按照BNF语法(最常出现):

讯飞语音识别

使用讯飞开放平台实现语音识别合成 发 社会和产品的发展总是向着便利和智能的方法发展,对于手机的App来说也是如此.所以,现在的App都在缩减流程,优化使用体验,为的就是让用户用起来更加便利,提高App的入手度和用户粘性.那么另一方面的智能呢? 一个比较简单智能的实现方法就是在输入的地方加上语音识别,在输出显示的时候加上语音合成,直接进行语音播报,那么是不是对于司机等来说就是一个智能的体现呢? 现在做语音识别有一些不错的开放平台可以给我们直接提供使用,一家是科大讯飞开放平台,一家是百度语音开放平台

一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说最大的问题是标准不统一云云,但在我看来,最大的问题在于两个方面,一个是价格,一个是操作的简便性,技术上的问题并不是阻碍智能家居推广的核心因素. 再来说说最近很火很惹人爱的微软小娜,Cortana.本人作为微软的死忠,作为一名靠.Net混饭的屌丝程序男,自然是有一部撸妹的,并且在小娜推送当天更新了手机

Unity3D5.3.5 PC x64讯飞语音识别测试

星期天掉了一天头发,晚上终于写完了,移植的讯飞官方C++例子的代码,测试环境Win7 64位,64位Unity5.3.5,32位应该同理,换个32位的讯飞dll就行,没测试但是理论上应该能行 程序必需在网络环境运行,因为要网络通信 有麦克风点左上角录音,可以对着麦克录音,停止,自动识别,没麦点右上角识别硬盘音频文件 语言0中文,1英文,想识别鸟语I used to be an advanture like you的别忘了切换 默认录音10秒,要录长时间音频自己设置,因为Unity用的不熟,不能自

iOS-Senior23-科大讯飞语音识别1

科大讯飞语音识别 随着当今社会的高速发展,我们所使用的产品也向着遍历和智能的方面发展着,当然了手机端的App也不例外.现在的App都在缩减用户操作的流程,优化用户的体验,为了更加便利用户.提高用户的DAU(日活),增加用户的粘性一般我们都会想出比较新颖的招式. 如果现在有这样一个需求:用户需求:用户需要绑定银行卡输入银行卡号,手动输入增加用户的操作度,所以用户可以通过语音读取银行卡号码,是不是既方便又只能,现在做语音识别的有一些不错的开放平台供我们使用,一家是科大讯飞平台,一家是百度语音平台.我

关于讯飞 使用android SDK出现21001错误码的分析

21001,没有安装语音组件1.有没有使用SpeechUtility.createUtility()设置appid2.有没有将libmsc.so放到工程中,jar包有Msc.jar.Sunflower.jar.3.如果使用的是讯飞语音+的本地功能,有没有安装讯飞语音+4.如果设备是android 5.0及其以上,需要将工程中的armeabi和armeabi-v7a文件夹中都放上libmsc.so,如果你下载的SDK中没有armeabi-v7a对应的库,可以将armeabi中的libmsc.so复

iOS-Senior23-科大讯飞语音识别2

将文字转成语音,步骤和什么类似,直接上代码 //第一步:引入头文件 //文字识别的回调方法接口 #import <iflyMSC/IFlySpeechSynthesizerDelegate.h> //文字识别对象 #import <iflyMSC/IFlySpeechSynthesizer.h> //科大讯飞语音框架定义的常量 #import <iflyMSC/IFlySpeechConstant.h> //延展 @interface SecondViewControl

讯飞语音 使用步骤(针对androidStudio):语音转文字:

前言:最近做项目用到了讯飞语音,遂搞了一个简单的教程,供大家使用. 讯飞语音  使用步骤:语音转文字:   1,首先去讯飞开放平台( http://www.xfyun.cn/)注册,账号:   2,注册后登录: 3,点击选择我的语音云:   4,点击左侧边栏,创建新的应用: 5,创建好应用后:如图:复制appid: 6,下载sdk:  点击边栏左侧sdk下载中心: 选择我们所需要的功能和平台: 7,点击下载sdk,保存文件,并打开. //-----------------------------

(转)IOS App中揉合讯飞SDK功能详细

转至:http://www.sufeinet.com/thread-2488-1-1.html 如何使用讯飞的语音SDK加入到你的iPhone应用中吧!1.首先请先到讯飞官方网站的开发者专区(http://open.voicecloud.cn/developer.php).如果你还没有注册,那么需要先注册一个开发者账号的.点击网站顶部的"免费注册"即可,使用你的自己的手机号码注册一个账号.2.仅仅注册了一个开发者账号还可以使用SDK,因为还需要申请Appid.登陆之后到自己的个人中心创