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