Android 讯飞语音合成

.
.

首先,需要先去科大讯飞官网申请帐号,以及创建应用,创建应用后可以进入我的应用查看APPID,并开通“讯飞语音合成”服务。然后下载对应的SDK,并进行以下步骤
http://www.xfyun.cn/

Step1:导包

Eclipse

这里写图片描述

Android Studio

Project视图:
这里写图片描述

Step2:添加权限

官方给出的权限,根据自己需要添加

<!--连接网络权限,用于执行云端语音能力 -->  
<uses-permission android:name="android.permission.INTERNET"/>  
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->  
<uses-permission android:name="android.permission.RECORD_AUDIO"/>  
<!--读取网络信息状态 -->  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
<!--获取当前wifi状态 -->  
<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"/>  
<!--读取联系人权限,上传联系人需要用到此权限 -->  
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<!--人脸识别 -->  
<!--摄相头权限,拍照需要用到 -->  
<uses-permission android:name="android.permission.CAMERA" />    

Step3:初始化

// 将“12345678”替换成您申请的APPID,申请地址:http://open.voicecloud.cn  
SpeechUtility.createUtility(context, SpeechConstant.APPID +"=12345678");   

Step4:具体代码

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;

public class MainActivity extends Activity {

    SpeechSynthesizer mTts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=123456");//APPID在科大讯飞官网申请,申请地址:http://open.voicecloud.cn
        //注意:此接口在非主进程调用会返回null对象,如需在非主进程使用语音功能,请使用参数:SpeechConstant.APPID +"=12345678," + SpeechConstant.FORCE_LOGIN +"=true"。
        mTts = SpeechSynthesizer.createSynthesizer(this, null);
        setSpeech(); //设置语音参数

        //点击Button阅读EditText里的内容
        findViewById(R.id.btnSpeak).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et = (EditText) findViewById(R.id.et);
                mTts.startSpeaking(et.getText().toString(), mSynListener);
            }
        });
    }

    /**
     * 设置语音阅读参数
     */
    private void setSpeech() {
        //2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类
        mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人
        mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
        mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100
        mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端
        //保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
        // mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
    }

    /**
     * 合成监听器
     */
    private SynthesizerListener mSynListener = new SynthesizerListener() {

        //会话结束回调接口,没有错误时,error为null
        public void onCompleted(SpeechError error) {
        }

        //缓冲进度回调
        //percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
        }

        //开始播放
        public void onSpeakBegin() {
        }

        //暂停播放
        public void onSpeakPaused() {
        }

        //播放进度回调
        //percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
        }

        //恢复播放回调接口
        public void onSpeakResumed() {
        }

        //会话事件回调接口
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
        }

    };
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值