讯飞开发平台提供了付费版的语音转写(Long Form Automatic Speech Recognition,通过SDK调用云端转写服务,将长段音频(5小时以内)转换成文字信息。)功能,分为标准版和电话专用版 http://www.xfyun.cn/services/lfasr
但是目前只提供Java平台的sdk,如果想要运行在Python下,可以通过jpype调用Java代码实现
具体的应用创建和sdk下载,请参照讯飞文档: http://www.xfyun.cn/doccenter/lfasr
可以参照官方提供的demo,比较简单,就是先把音频文件上传(调用client.lfasr_upload(fileName)),会返回一个Message对象,对象的getData方法得到的就是刚刚上传的音频的任务ID,再根据这个ID调用client.lfasr_get_result(taskid)方法就返回了识别后的数据
package test; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.iflytek.voicecloud.client.LfasrClient; import com.iflytek.voicecloud.model.LfasrType; import com.iflytek.voicecloud.model.Message; public class Test { public static void main(String[] args) throws Exception { //上传音频文件 String path = "D:/test.wav"; String result = upload(path); System.out.println(result); } public static String upload(String path) throws Exception { String appid = "appid"; //您的appid,如"5848d773" String secret_key = "secret_key"; //您的secret_key,如"b849c87a8bc2c7ww68b6dfbddee6dc35" LfasrType type = LfasrType.LFASR_TELEPHONY_RECORDED_AUDIO;//(“电话专用版-已录制音频”) //LfasrType type = LfasrType.LFASR_STANDARD_RECORDED_AUDIO;//LFASR_STANDARD_RECORDED_AUDIO(“标准版-已录制音频”) LfasrClient client = LfasrClient.InitClient(appid, secret_key, type); Message message = client.lfasr_upload(path); //阻塞,直到返回message String taskid = message.getData();//刚刚上传的音频的任务ID return result(taskid,client); } public static String result(String taskid,LfasrClient client) throws Exception { String result = ""; while(true){//lfasr_get_result(taskid)是异步的,需要不断的轮询获取结果,官方的说明是:1个小时的音频至少需间隔大于8分钟后才可调用此方法 Message message = client.lfasr_get_result(taskid); if(message.getOk() == 0){ String data = message.getData(); JSONArray jsonArray = JSONArray.parseArray(data); for(int i = 0;i<jsonArray.size();i++){ JSONObject object = (JSONObject) jsonArray.get(i); String onebest = (String) object.get("onebest"); result += onebest; } break; } } System.out.println("result == " + result); return result; } }编写MANIFEST.MF文件 (注意:第4行是空行)
选择File—>Export
选择导出的项目,填写导出路径
默认
选择刚刚填写的MANIFEST.MF文件
点击Finish,就生成了
先安装jpype框架,详见http://blog.csdn.net/benhuo931115/article/details/61421228
代码如下:
#-*- coding: utf-8 -*- from jpype import * import os.path jarpath = os.path.join(os.path.abspath('.'), '') startJVM(getDefaultJVMPath(),"-ea", "-Djava.class.path=%s" % (jarpath + 'xfTelTest.jar')) JDClass = JClass("test.Test") #jd = JDClass() #jd = JPackage("test").Test() #两种创建jd的方法 result = JDClass.upload('D:/test.wav') print result shutdownJVM()ps:讯飞这个付费版对于电话的音频识别还是很准的,但是识别的时间较长,3秒的音频识别要花费5秒