您的位置:首页 > 其它

语音识别、语音合成使用基础(讯飞开放平台)

2016-06-01 14:10 405 查看
1.在http://www.xfyun.cn进入讯飞开放平台。

  创建应用  创建完毕  下载SDK(单个或组合下载):选择服务 选择平台 选择自己之前创的应用

2.下载完毕后,将(F:\讯飞开放平台\Android_voice_1098_574d92ab\libs)libs里面的Msc.jar、armeabi复制到项目中

其中在官网的资料库-开发集成-Android平台有教你怎么使用。

例子:

1.布局分布如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.yzxvoice.MainActivity" >

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="listen"
android:text="语音听写(音转句)无提示" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="listenui"
android:text="语音听写有(音转句)提示" />

<TextView
android:id="@+id/UI1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="tv" />

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="speak"
android:text="语音合成(句转音)" />

</LinearLayout>


2.在工程AndroidManifest.xml文件中添加如下权限:

<!--连接网络权限,用于执行云端语音能力 -->
<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"/>


3.MainActivity.java

package com.example.yzxvoice;

import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;

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

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 将“12345678”替换成您申请的APPID,申请地址:http://open.voicecloud.cn
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=574d92ab");
}

/*
* 语音合成
*/
public void speak(View v) {
// 1.创建SpeechSynthesizer对象, 第二个参数:本地合成时传InitListener
SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, null);
// 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); // 设置云端
// 设置合成音频保存位置(可自定义保存位置),保存在“./sdcard/iflytek.pcm”
// 保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
// 如果不需要保存合成音频,注释该行代码
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
// 3.开始合成
mTts.startSpeaking("床前明月光,疑是地上霜,举头望明月,低头思故乡", new MySynListener());
}

class MySynListener implements SynthesizerListener {
// 缓冲进度回调
// percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
@Override
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
// TODO Auto-generated method stub

}

@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub

}

// 会话事件回调接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub

}

// 开始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub

}

// 暂停播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub

}

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

}

@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub

}

}

/*
* 语音听写(有提示)
*/
public void listenui(View v) {
// 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
RecognizerDialog iatDialog = new RecognizerDialog(this, null);
// 2.设置听写参数,同上节
iatDialog.setParameter(SpeechConstant.DOMAIN, "iat");
iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin ");
// 3.设置回调接口
iatDialog.setListener(new MyRecognizerDialogListener());
// 4.开始听写
iatDialog.show();
}

class MyRecognizerDialogListener implements RecognizerDialogListener {

@Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub

}

@Override
public void onResult(RecognizerResult result, boolean arg1) {
// TODO Auto-generated method stub
System.out.println("ui:" + result.getResultString());
TextView tv = (TextView) findViewById(R.id.UI1);
tv.append(result.getResultString());
}

}

/*
* 语音听写(无提示)
*/
public void listen(View v) {
// 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
SpeechRecognizer mIat = SpeechRecognizer.createRecognizer(this, null);
// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
mIat.setParameter(SpeechConstant.DOMAIN, "iat");
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mIat.setParameter(SpeechConstant.ACCENT, "mandarin ");
// 3.开始听写
mIat.startListening(new MyRecoListenerListener());
// 听写监听器
}

class MyRecoListenerListener implements RecognizerListener {

@Override
public void onBeginOfSpeech() {
// TODO Auto-generated method stub

}

// 结束录音
@Override
public void onEndOfSpeech() {
// TODO Auto-generated method stub

}

@Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub

}

// 扩展用接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub

}

@Override
public void onResult(RecognizerResult result, boolean arg1) {
// TODO Auto-generated method stub
System.out.println(result.getResultString());
}

// 音量值0~30
@Override
public void onVolumeChanged(int volume, byte[] arg1) {
// TODO Auto-generated method stub

}

}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: