1:讯飞开放平台提供了很多服务,有语音相关的:离线,在线语音合成及识别;人机交互;有模式识别相关的:人脸识别,声纹识别;还要云存储等等,如有兴趣,自行百度。
2:看了下官方SDK,试着体验下。导入两个jar包到lib目录,以及两个dll和so文件放到工程根目录。
本次先体验下语音合成模块。
语音合成主要涉及一个类,如下,完成语音的合成
import com.iflytek.cloud.speech.SpeechConstant;
import com.iflytek.cloud.speech.SpeechError;
import com.iflytek.cloud.speech.SpeechSynthesizer;
import com.iflytek.cloud.speech.SynthesizerListener;
public class ttsSpeech {
//定义两个成员变量,一个是需要合成的内容;一个是语音文件输出路径,但是科大讯飞生成的语音文件无法播放,可能有其他原因吧。
public String content;
public String audioOutPath;
//构造函数
public ttsSpeech(String content, String audioOutPath) {
super();
this.content = content;
this.audioOutPath = audioOutPath;
}
/**
* 语音合成函数
*/
public void Synthesize() {
SpeechSynthesizer speechSynthesizer = SpeechSynthesizer
.createSynthesizer();
// 设置发音人
speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
// 设置语速,范围0~100
speechSynthesizer.setParameter(SpeechConstant.SPEED, "50");
// 设置语调,范围0~100
speechSynthesizer.setParameter(SpeechConstant.PITCH, "50");
// 设置音量,范围0~100
speechSynthesizer.setParameter(SpeechConstant.VOLUME, "80");
// 设置合成音频保存位置(可自定义保存位置),默认保存在“./iflytek.pcm”
speechSynthesizer.setParameter(SpeechConstant.TTS_AUDIO_PATH, this.audioOutPath);
speechSynthesizer.startSpeaking(this.content, mySynListener);
}
/**
* 合成监听器
*/
private static SynthesizerListener mySynListener = new SynthesizerListener() {
@Override
public void onBufferProgress(int arg0, int arg1, int arg2,
String arg3) {
// TODO Auto-generated method stub
//System.out.println("语音合成进度"+arg0+"-"+arg1+"-"+arg2+"\n");
}
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub
System.out.println("语音转换完成"+"\n");
}
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
System.out.println("开始语音转换"+"\n");
}
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub
}
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
//System.out.println("语音播放进度"+arg0+"-"+arg1+"-"+arg2+"\n");
}
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub
}
};
}下面就是如何调用该类对象完成特定内容的语音合成
String content="20多年前我处在了人生的一个十字路口。随着我们用5年时间为出版社(他们希望新兴的互联网空间)打造的Deltagraph的终结";
String path="D:/test/test.wav";
SpeechUtility.createUtility(SpeechConstant.APPID+"=5712115d");
System.out.println("content:"+content+":"+content.length());
ttsSpeech tts=new ttsSpeech(content,path);
tts.Synthesize();执行程序后,很快就能够听到上述文本内容的语音播放,还不错。
本文出自 “催花雨” 博客,请务必保留此出处http://chenwen.blog.51cto.com/771416/1766410
原文:http://chenwen.blog.51cto.com/771416/1766410