首先登陆科大讯飞开发者平台,注册账号,(走你->http://www.xfyun.cn/)
可以根据功能(语音识别,语音播放等),平台(java,window等),来创建属于自己的应用。
应用创建成功后对有一个对应的appid以及sdk(开发工具包);
我们自己开发的话需要sdk里面的四个文件
分别是两个库文件:libmsc64(32).so ,msc64(32).dll
两个jar包 :Msc.jar ,json-jena.jar
jar包正常导入,两个文件需要注意,如果是javaSE项目,就直接放到项目的根目录下,
如果项目是javaweb且在window系统中,将文件放在哪里都可以,但是必须将文件的路径加入到电脑环境变量的path路径里,
如果是项目是javaweb在linux系统中,需要将两个库文件放到lib文件夹下。
最后,现在时间是2017年7月11日14:39.到目前为止科大讯飞的javaSDK不支持客户端和服务端分开的情况,也就是说,语音合成是在服务端的话筒的播放,语音识别需要服务端的麦克风录音,so,javaSDK对于javaWeb没有任何卵用。
下面是javaSE版本的dome的介绍:
/**
* Created by Mshu on 2017/6/27.
* 语音识别
*/
public class Listening {
private static final String APPID = "你的专属appid";
public static void main(String[] args) {
SpeechUtility.createUtility("appid=" + APPID);
//1.创建SpeechRecognizer对象
SpeechRecognizer mIat= SpeechRecognizer.createRecognizer( );
//2.设置听写参数,详见《MSC Reference Manual》SpeechConstant类
mIat.setParameter(SpeechConstant.DOMAIN, "iat"); //领域短信和日常用语:iat (默认);视频:video;地图:poi;音乐:music
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//简体中文:zh_cn(默认);美式英文:en_us
mIat.setParameter(SpeechConstant.ACCENT, "mandarin ");//方言普通话:mandarin(默认);粤 语:cantonese四川话:lmz;河南话:henanese
mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, "./tts_test.pcm"); //识别完成后在本地保存一个音频文件
mIat.setParameter(SpeechConstant.AUDIO_SOURCE,"1"); //如果不写默认是“1”,“1”是从麦克风读取声音,“-1”是从.pcm音频文件读取声音
//3.开始听写-
Recognizer recognizer =new Recognizer();
mIat.startListening (recognizer);
}
}
/**
* Created by Mshu 2017/7/11.
* 语音识别回掉
*/
public class Recognizer implements RecognizerListener {
//开始录音
public void onBeginOfSpeech() {
System.out.println(".。开始录音。.");
}
//音量值0~30
public void onVolumeChanged(int volume){
/*System.out.println("当前音量"+volume);*/
}
//结束录音
public void onEndOfSpeech() {
System.out.println("录音结束");
}
//扩展用接口
public void onEvent(int eventType,int arg1,int arg2,String msg) {}
//听写结果回调接口(返回Json格式结果,用户可参见附录);
//一般情况下会通过onResults接口多次返回结果,完整的识别内容是多次结果的累加;
//关于解析Json的代码可参见MscDemo中JsonParser类;
//isLast等于true时会话结束。
public void onResult(RecognizerResult results, boolean isLast){
System.out.println("Result:"+results.getResultString ());
//结果实例
//Result:{"sn":1,"ls":false,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0.00,"w":"你好"}]}]}
//sn:第几句
//ls:是否是第一句
//bg:开始
//ed:结束
//ws:词语
//cw:中文分词
//w:单词
//sc:分数
}
//会话发生错误回调接口
public void onError(SpeechError error) {
// error.getPlainDescription(true); //获取错误码描述
System.out.println(error.getErrorDesc());
}
* Created by Mshu on 2017/6/27.
* 语音合成
*/
import com.iflytek.cloud.speech.*;
public class Spesking {
private static final String APPID = "59522b3c";
public static void specking() {
SpeechUtility.createUtility("appid=" + APPID);
//1.创建SpeechSynthesizer对象
SpeechSynthesizer mTts= SpeechSynthesizer.createSynthesizer( );
//2.合成参数设置,详见《MSC Reference Manual》SpeechSynthesizer 类
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); //设置发音人
mTts.setParameter(SpeechConstant.SPEED, "50"); //设置语速 范围0~100
mTts.setParameter(SpeechConstant.VOLUME, "80"); //设置音量,范围0~100
//设置合成音频保存位置(可自定义保存位置),保存在“./tts_test.pcm”
//如果不需要保存合成音频,注释该行代码
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./tts_test.pcm");
//3.开始合成
Synthesizer synthesizer = new Synthesizer();
mTts.startSpeaking("语音合成测试程序", synthesizer);
}
}
/**
* Created by Asus on 2017/6/29.
* 语音合成回掉
*/
public class Synthesizer implements SynthesizerListener {
//会话结束回调接口,没有错误时,error为null
public void onCompleted(SpeechError error) {
}
@Override
public void onEvent(int i, int i1, int i2, int i3, Object o, Object o1) {
}
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
}
//开始播放
public void onSpeakBegin() {
}
//暂停播放
public void onSpeakPaused() {
}
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
public void onSpeakProgress(int percent, int beginPos, int endPos) {
}
//恢复播放回调接口
public void onSpeakResumed() {
}
}
以上是语音识别和语音合成两个基础功能,由于篇幅限制,就不写其他功能了,
其他功能比如无声合成和音频流听写,其实就是将文字合成语音文件和读取语音文件并播放两个功能。对了!
还有上传词汇表的功能,上传用户词表可以提高词表内词汇的识别率,也可以提高语义的效果,对付多音字比较奏效,比如 Fa Yan的读音,对应的汉子有 “发言” , “发炎” ;如果将 ”发炎“ 的词汇加入词汇表,它会优先辨识为发炎。
完整功能的dome地址:https://github.com/Mshu95/vioce (别用我的appid)
—-在下载的SDK里面也有官方的例子。