php调用科大讯飞Java SDK

做php项目中,需要使用科大讯飞的语音转换,但是科大讯飞SDK中只有java版,木有php版.

php中使用java SDK中的服务有多种,今天我使用 php-java-bridge这种方式调用jar中类,具体安装操作 《使用php-java-bridge让PHP调用jar中的类》

 

1.封装科大讯飞jar

package test;

import com.iflytek.voicecloud.client.LfasrClient;
import com.iflytek.voicecloud.model.LfasrType;
import com.iflytek.voicecloud.model.Message;
/**
* 科大讯飞
* @author sunny5156
*
*/
public class Kedaxunfei {

    //appid
    public String appid = "";
    //secret
    public String secret = "";

    /**
     * 设置参数
     * @param appid
     * @param secret
     */
    public void config(String appid,String secret){

        if(appid == "" || appid == null) appid = "58*****f6";
        if(secret == "" || appid == null) secret = "852e*************************045d";

        this.appid = appid;
        this.secret = secret;

    }

    /**
     * 上传文件
     * @param voicePath 声音绝对路径 <wav mp3格式>
     * @return 声音任务 taskid
     * @throws Exception
     */
    public String voiceUpload(String voicePath) throws Exception{

        LfasrType type = LfasrType.LFASR_STANDARD_RECORDED_AUDIO;

        System.out.println(type);
        LfasrClient client = LfasrClient.InitClient(this.appid, this.secret, type);
        Message taskId = client.lfasr_upload(voicePath);  //需要转写的音频文件的路径,如"E:\\20160716am-as-shenzhen-Alex.mp3"

        return taskId.getData();
    }

    /**
     * 翻译转换
     * @param taskId 声音任务id
     * @return 转换对象 json数据
     * @throws Exception
     */
    public String voiceTranslate(String taskId) throws Exception{

        LfasrType type = LfasrType.LFASR_STANDARD_RECORDED_AUDIO;
        LfasrClient client = LfasrClient.InitClient(this.appid, this.secret, type);

        Message message = client.lfasr_get_result(taskId);
        //System.out.println(message);
        return message.toString();
    }

}

 

生成jar包,命名自己定义,我命名为Kedaxunfei.jar

 

2.上传Kedaxunfei.jar到 jre/ext中

image

 

3.重启JavaBridger

pkill –9 java

java -jar /data/phpJavaBridge/JavaBridge.jar SERVLET:8081 3 JavaBridge.log &

 

image

 

4.编写并上传php代码

<?php
header( 'Content-Type: text/html; charset=UTF-8' );

define("JAVA_DEBUG", true); //调试设置
define("JAVA_HOSTS", "127.0.0.1:8081"); //设置javabridge监听端口
/*0: Log nothing, not even fatal errors.
1: Log fatal system errors such as "out of memory error".
2: Log java exceptions.*/
define("JAVA_LOG_LEVEL", 2); //java.log_level: 0-6

require_once "Java.inc"; //php调用java的接口,与该脚本位于同一目录
//java_require("/data/www/lfasr.jar");
java_set_file_encoding("UTF-8"); //设置JAVA编码。

$xf = new Java("test.Kedaxunfei"); //实例

try{
    $xf->config("587d81f6","852ed215ed7533c43b59dbdcbd91045d");
    //echo $xf->voiceUpload("/data/www/2.wav");//上传返回taskId
    //echo $xf->voiceTranslate("0aa02a30e1fe4e09941d58b87f447dbd");//翻译
    echo $xf->voiceTranslate("989a4459bb8c4a9ab64835c393e5b330");//翻译

}
catch(Exception $e) {
    echo($e);
}

 

 

5.浏览器查看结果

image