资讯专栏INFORMATION COLUMN

科大讯飞语音识别和语音播放dome

KitorinZero / 3533人阅读

摘要:最后,现在时间是年月日到目前为止科大讯飞的不支持客户端和服务端分开的情况,也就是说,语音合成是在服务端的话筒的播放,语音识别需要服务端的麦克风录音,,对于没有任何卵用。

首先登陆科大讯飞开发者平台,注册账号,(走你->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里面也有官方的例子。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67365.html

相关文章

  • 智能语音受热捧,华为云联手科大讯飞恶补短板

    摘要:近日,科大讯飞与华为在深圳签署了战略合作协议,科大讯飞董事长刘庆峰华为轮值董事长徐直军均出席签约仪式,足以看出双方对此次合作的重视程度。华为云需要科大讯飞,特别是科大讯飞的智能语音技术。在云计算智能语音领域,BAT由于多年的互联网基因,都有非常深厚的智能语音功底,百度有百度度秘,阿里有阿里小蜜,腾讯有腾讯小微。而华为云作为一家传统ICT转型做云的企业,似乎并没有经受太多互联网智能语音训练。但...

    OnlyLing 评论0 收藏0
  • 语音识别框架最新进展——深度全序列卷积神经网络登场

    摘要:目前较好的语音识别系统采用双向长短时记忆网络,,这种网络能够对语音的长时相关性进行建模,从而提高识别正确率。因而科大讯飞使用深度全序列卷积神经网络来克服双向的缺陷。 人工智能的应用中,语音识别在今年来取得显著进步,不管是英文、中文或者其他语种,机器的语音识别准确率在不断上升。其中,语音听写技术的发展更为迅速,目前已广泛在语音输入、语音搜索、语音助手等产品中得到应用并日臻成熟。但是,语音应用的...

    explorer_ddf 评论0 收藏0
  • 原 Python用ctypes调用动态库的方式使用科大讯飞语音识别

    摘要:科大讯飞的语音识别客户端提供了下的语言,却没有的。有了,我们就可以很轻松的用来使用科大讯飞的语音识别了。通过函数加载动态库在里面调用函数时主要是注意参数的类型。 ctypes 是 Python 的一个模块,它提供了C语言相关的数据类型,可以方便的调用C语言编写的DLL(Windows 动态链接库)和so(Linux动态链接库)。科大讯飞的语音识别客户端SDK提供了Linux下的C语言S...

    andycall 评论0 收藏0
  • 微信小程序--------语音识别(前端自己也能玩)

    摘要:一背景作为一名前端同学有时候感觉挺可怜的,复杂的操作都依赖后端同学在服务器端完成。 一、背景 作为一名前端同学有时候感觉挺可怜的,复杂的操作都依赖后端同学在服务器端完成。那么,有一天我们自己想玩一个新技术或者后端同学不搭理我们,怎么办?绝望中..... 二、小程序语音识别 接到这个需求,我们明确两个问题: 小程序录音支持什么格式 由小程序文档可知:只支持 mp3格式和 aac格式微信...

    omgdog 评论0 收藏0
  • 在Python中使用科大讯飞Web API进行语音合成

    摘要:所以这次总结一下在中使用讯飞进行语音合成的过程。最后需要将配置参数编码为字符串字典类型明文字符串编码字符串,具体实现可以参考代码。返回值的具体说明请参考返回值语音合成。 前几日讯飞开放平台推出了WebAPI接口,恰好最近需要实现一个文字转语音的功能,于是就尝试着用了起来。但不知什么原因,官方文档的调用示例一直报错,最后自己照着示例的思路用python3重写了一遍。所以这次总结一下在Py...

    Eminjannn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<