讯飞为我们提供了一个很好地平台,语音的相关技术是人工智能的一项重要组成部分。了解与掌握语音的合成技术更是掌握了一项技能,当然本文就是从浅层入手,了解使用讯飞语音平台提供的API 的使用;能够通过一些简单的配置来使用该项技术。不管怎样多学点儿总归是好的。
如果你还不会在讯飞语音平台创建应用,请先了解讯飞语音的详细配置使用
讯飞语音最简单的也是最基础的一个功能——语音合成;语音合成就是将文本转化为语音的技术。
比如现在有个文本:
请保持喧哗,不要停!
实现:就是把这句话通过代码转化实现让手机说出来。
<1.1>有几点需要注意的地方,在讯飞语音的详细配置使用中也说过了,就是配置文件要求,SDK 与 申请的key 值Appid一一对应。不然会有初始化错误。
<1.2>实例工程图如下:
<2.1>.新建 Android Application Project 工程,命名为TestSpeakerDemo
将创建应用时下载 SDK中的配置文件复制到当前工程下
配置文件:
assets 和libs 下的包
以下新建文件命名自定义。
创建应用所申请的key值 Appid在初始化SDK 时用到
<1.1>MainActivity.java 代码如下
注意Appid要与SDK 对应,避免初始化错误
package pers.rfeng.demo; import com.iflytek.cloud.SpeechConstant; import com.iflytek.cloud.SpeechSynthesizer; import com.iflytek.cloud.SpeechUtility; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub SpeechUtility.createUtility(MainActivity.this, "appid=" + getString(R.string.app_id)); //初始化 SDK SpeechSynthesizer speaker = SpeechSynthesizer.createSynthesizer(MainActivity.this, null);//创建语音合成对象 speaker.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan"); //初始化语音合成相关设置 speaker.setParameter(SpeechConstant.SPEED,"50"); speaker.setParameter(SpeechConstant.PITCH,"50"); speaker.setParameter(SpeechConstant.VOLUME,"50"); speaker.setParameter(SpeechConstant.STREAM_TYPE,"3"); speaker.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true"); speaker.startSpeaking("请保持喧哗,不要停!", null); super.onCreate(savedInstanceState); } }
<1.2>AndroidManifest.xml 代码如下
注意有关语音权限的配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pers.rfeng.demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="pers.rfeng.demo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <!-- 语音所需必要的权限 --> <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" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> </manifest>
<1.3>运行工程,文本就以语音的方式说出来了。
这里就简单的介绍语音合成功能,更多功能请参考开发文档