python调用讯飞付费版语音转写

python调用讯飞付费版语音转写

讯飞开发平台提供了付费版的语音转写(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

实现步骤

1.导入lfasr_1.1.0001.0.jar,编写Java代码

可以参照官方提供的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

2.导出jar包

编写MANIFEST.MF文件
python调用讯飞付费版语音转写_第1张图片
(注意:第4行是空行)

选择File—>Export
python调用讯飞付费版语音转写_第2张图片

选择导出的项目,填写导出路径
python调用讯飞付费版语音转写_第3张图片

默认
python调用讯飞付费版语音转写_第4张图片

选择刚刚填写的MANIFEST.MF文件
python调用讯飞付费版语音转写_第5张图片

点击Finish,就生成了这里写图片描述

3.编写Python代码

先安装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秒

你可能感兴趣的:(实用技能学习)