一、写在前面的话
讯飞为我们提供了一个很好地平台,语音的相关技术是人工智能的一项重要组成部分。了解与掌握语音的合成技术更是掌握了一项技能,当然本文就是从浅层入手,了解使用讯飞语音平台提供的API的使用;能够通过一些简单的配置来使用该项技术。不管怎样多学点儿总归是好的。
如果你还不会在讯飞语音平台创建应用,请先了解讯飞语音的详细配置使用
二、功能描述
讯飞语音最简单的也是最基础的一个功能——语音合成;语音合成就是将文本转化为语音的技术。
比如现在有个文本:
请保持喧哗,不要停!
实现:就是把这句话通过代码转化实现让手机说出来。
三、配置文件
<1.1>有几点需要注意的地方,在讯飞语音的详细配置使用中也说过了,就是配置文件要求,SDK与 申请的key值Appid一一对应。不然会有初始化错误。
<1.2>实例工程图如下:
<2.1>.新建AndroidApplication Project工程,命名为TestSpeakerDemo
将创建应用时下载SDK中的配置文件复制到当前工程下
配置文件:
assets和libs下的包
以下新建文件命名自定义。
四、实例代码
创建应用所申请的key值Appid在初始化SDK时用到
<1.1>MainActivity.Java代码如下
注意Appid要与SDK对应,避免初始化错误
[java]view plaincopypackagepers.rfeng.demo; importcom.iflytek.cloud.SpeechConstant; importcom.iflytek.cloud.SpeechSynthesizer; importcom.iflytek.cloud.SpeechUtility; importandroid.app.Activity; importandroid.os.Bundle; publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub SpeechUtility.createUtility(MainActivity.this,"appid="+getString(R.string.app_id)); //初始化SDK SpeechSynthesizerspeaker=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代码如下
注意有关语音权限的配置
[java]view plaincopy<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="/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> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <!--语音所需必要的权限--> <uses-permissionandroid:name="android.permission.RECORD_AUDIO"/> <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/> <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permissionandroid:name="android.permission.READ_CONTACTS"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/> <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/> </manifest>
<1.3>运行工程,文本就以语音的方式说出来了。