语音识别语音合成使用基础(讯飞开放平台)
Posted 沉默的羊癫疯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音识别语音合成使用基础(讯飞开放平台)相关的知识,希望对你有一定的参考价值。
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 } } }
以上是关于语音识别语音合成使用基础(讯飞开放平台)的主要内容,如果未能解决你的问题,请参考以下文章