1. 程式人生 > >科大訊飛和百度語音平臺語音識別Java呼叫記錄

科大訊飛和百度語音平臺語音識別Java呼叫記錄

1、科大訊飛平臺:http://www.xfyun.cn/doccenter/java
     註冊並建立應用,下載SDK,選擇語音聽寫+Java+建立的應用(APPID);
     未提交稽核的應用,服務量會有500次/日的限制,開發完成後提交稽核解除限制;

     SDK裡面的Sample功能直接匯入eclipse,編譯執行,支援粵語;

2、百度http://yuyin.baidu.com/
     註冊並 建立應用,下載REST API的壓縮文件,提供Http介面支援整段錄音檔案的識別;
     原始語音的錄音格式目前支援評測 8k/16k 取樣率 16bit 位深的單聲道語音;
     壓縮格式支援:pcm(不壓縮)、wav、opus、speex、amr、x-flac;
     語音識別服務開通成功後即可獲得 50000次/日 的線上識別呼叫配額;

     http://yuyin.baidu.com/docs/asr/57

     Sample程式碼

package org.asr.baidu.speech.serviceapi;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.xml.bind.DatatypeConverter;

import org.asr.json.JSONObject;

public class Sample {

    private static final String serverURL = "http://vop.baidu.com/server_api";
    private static String token = "";
    //private static final String testFileName = "test.pcm";
    private static final String testFileName = "D:\\tmp\\1.wav";
    //put your own params here
    private static final String apiKey = "";
    private static final String secretKey = "";
    private static final String cuid = "";

    public static void main(String[] args) throws Exception {
        getToken();
        //method1();
        method2();
    }

    private static void getToken() throws Exception {
        String getTokenURL = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials" + 
            "&client_id=" + apiKey + "&client_secret=" + secretKey;
        HttpURLConnection conn = (HttpURLConnection) new URL(getTokenURL).openConnection();
        token = new JSONObject(printResponse(conn)).getString("access_token");
    }

    private static void method1() throws Exception {
        File pcmFile = new File(testFileName);
        HttpURLConnection conn = (HttpURLConnection) new URL(serverURL).openConnection();

        // construct params
        JSONObject params = new JSONObject();
        params.put("format", "pcm");
        params.put("rate", 8000);
        params.put("channel", "1");
        params.put("token", token);
        params.put("cuid", cuid);
        params.put("len", pcmFile.length());
        params.put("speech", DatatypeConverter.printBase64Binary(loadFile(pcmFile)));

        // add request header
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");

        conn.setDoInput(true);
        conn.setDoOutput(true);

        // send request
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
        wr.writeBytes(params.toString());
        wr.flush();
        wr.close();

        printResponse(conn);
    }

    private static void method2() throws Exception {
        File pcmFile = new File(testFileName);
        HttpURLConnection conn = (HttpURLConnection) new URL(serverURL
                + "?cuid=" + cuid + "&token=" + token).openConnection();

        // add request header
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "audio/pcm; rate=8000");

        conn.setDoInput(true);
        conn.setDoOutput(true);

        // send request
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
        wr.write(loadFile(pcmFile));
        wr.flush();
        wr.close();

        printResponse(conn);
    }

    private static String printResponse(HttpURLConnection conn) throws Exception {
        if (conn.getResponseCode() != 200) {
            // request error
            return "";
        }
        InputStream is = conn.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer response = new StringBuffer();
        while ((line = rd.readLine()) != null) {
            response.append(line);
            response.append('\r');
        }
        rd.close();
        System.out.println(new JSONObject(response.toString()).toString(4));
        return response.toString();
    }

    private static byte[] loadFile(File file) throws IOException {
        InputStream is = new FileInputStream(file);

        long length = file.length();
        byte[] bytes = new byte[(int) length];

        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length
                && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
            offset += numRead;
        }

        if (offset < bytes.length) {
            is.close();
            throw new IOException("Could not completely read file " + file.getName());
        }

        is.close();
        return bytes;
    }
}

3)兩個平臺都提供相對詳細的開發者教程,Demo也可以直接使用,相對來說科大訊飛平臺支援方言和語音訓練,百度暫時沒發現有語音訓練功能。

相關推薦

科大語音平臺語音識別Java呼叫記錄

1、科大訊飛平臺:http://www.xfyun.cn/doccenter/java      註冊並建立應用,下載SDK,選擇語音聽寫+Java+建立的應用(APPID);      未提交稽核的應用,服務量會有500次/日的限制,開發完成後提交稽核解除限制;     

地圖地圖的PHP相互轉換

/** * 百度地圖---->騰訊地圖 * @param double $lat 緯度 * @param double $lng 經度 * @return array(); */ function Convert_BD09_To_GCJ02($lat,$lng){ $x_pi =

地圖地圖的相互轉換

關於百度和騰訊地圖座標轉換的問題,網上大多給的是JS實現的,而JS又是非同步實現的,無法返回值,在有些應用場景下不好使用,這裡我從騰訊論壇上找到了一個PHP轉換的方法,貼出來分享給大家。經測試十分有效

語音識別介面webAPI-python測試:科大

概述 目前市場上有很多家的語音識別介面可用,簡單測試都不要錢。國內的BAT和科大訊飛,國外的微軟和谷歌都提供了中文的語音識別介面,既有sdk又有webAPI。我的測試都是在python3環境下進行的。 最終選擇百度和科大訊飛的介面。主要是考慮中文識別應該國內

ROS語音科大參考

百度語音介面:https://blog.csdn.net/u011118482/article/details/55001444科大訊飛:https://www.ncnynl.com/archives/201702/1287.htmlhttps://blog.csdn.net

離線語音合成使用——科大or雲知音or語音

本片主要講解如果使用科大訊飛和雲知音這兩個離線語音合成功能。目前語音合成的主要有科大訊飛、百度語音、雲知聲。一、三大產品功能分析1.百度語音百度語音合成只有離線上語音服務(免費),沒有純離線,離線上語音合成,在首次使用語音功能,必須聯網,讓其通過網路獲得百度的授權檔案之後,方

為什麼語音科大差了幾條街?

辛辛苦苦,信心滿滿的集成了百度TTS語音合成,結果客戶隨便發了個abcdefghijklmn,分分鐘把百度語音完爆了。 http://ai.baidu.com/tech/speech/tts http://www.xfyun.cn/services/online_tts

FreeSWITCH 語音識別 ASR 介面介紹 科大 阿里雲 等介面實現

FreeSWITCH 語音識別 ASR 模組 最近很多人都對FreeSWITCH和ASR對接比較感謝興趣,我之前已經做了一個商業模組(商業模組請點選這裡http://www.dingdingtong.

10月15日科技聯播:外賣正式更名“餓了麼星選”;央視曝科大以AI為名拿地蓋別墅

百度外賣退出歷史舞臺,正式更名為“餓了麼星選”,外賣之爭的新戰役打響;科大訊飛再次陷入“輿情高地”,頂著AI的名號搞房地產,遭央視點名曝光;巨頭聯手,網易雲聯手百度,線上音樂市場是否會掀起新的波瀾?一起來看今天的科技快訊: 百度外賣更名“餓了麼星選”,外賣業變兩軍對壘 百度外賣今日正式更名為“餓了麼星

unity接科大語音識別Windows平臺(補充前面的文章,添加了錄音功能)

其他操作就不在一一贅述了,直說一下新增的負責錄音的那段程式碼 1、首先利用Microphone類開始錄製和結束錄製音訊 2、利用AudioSource類播放錄製的音訊 3、然後用自己寫的方法Float2Byte將錄製的音訊轉成byte資料,供訊飛語音識別方法呼叫 詳細

科大實現“文字轉語音語音轉文字”

請在這裡檢視示例 ☞ iat示例 詳細介紹 這裡整合了科大訊飛官方示例,去除一些不必要的元素,便於開發者理解和應用相關功能 經測試,在chrome瀏覽器下不允許在http協議下使用html5的ap

Android 科大 線上離線語音聽寫

效果圖: 參考資料 專案裡要用語音聽寫,想到了科大訊飛,參考上面的資料完成了最簡單的線上有UI的語音識別,後面想要改成離線也可以使用。參考下面的文章 下載好語記和離線資源之後,想要改成有UI的RecognizerDialog離線語音聽寫,但是沒

我的秋招總結(,搜狗,京東,美團,科大,新華三,國家網際網路應急中心,微盟,ofo面經)

寫在前面的話: 一轉眼已經十一月下旬,也終於得空能夠把剛過去不久的秋招記錄一下,本人是軟體工程專業,工作職位投遞的主要是大資料開發和軟體開發。這篇文章會涉及一些公司的面經以及我個人的一些心得體會,希望能夠對能夠看到這篇文章的朋友有所幫助。 八月到十月,三個多月的時間裡,投

科大語音合成語音聽寫)

由於google的自帶的TTS不支援中文轉語音。所以很無奈的只能選擇語音龍頭中的科大訊飛了 本文章只是簡單的實現語音合成和語音聽寫 package com.example.viocedemo; import com.iflytek.cloud.speech.Rec

C#調用科大離線語音SDK合成TTS

zha http post ref top 代碼 來源 內容 lib bin目錄下有msc.dll動態庫。c#調用科大訊飛的語音合成,需要引用該文件。 該文件是C語言生成的dll,C#沒辦法直接引用。所有需要用C#重新封裝一個TTS.dll,然後再在C#項目中引用封裝的TT

在C#中使用科大Web API進行語音合成

.get 接口 style serialize pan python版本 compute serial try   最近工作中需要用到訊飛語音合成接口,網上看了下基本都是Java,PHP,Python版本的,正好補上C# 版本,代碼比較簡單。    首先在訊飛開放平臺上創

有關整合科大sdk的語音(三)語音合成

有關語音合成的,廢話不說,直接程式碼 @property (nonatomic, strong) IFlySpeechSynthesizer *iFlySpeechSynthesizer;//語音合成 - (void)viewWillAppear:(BOOL)animated

有關整合科大sdk的語音(二)不帶語音的介面

不帶語音的就需要自定義語音識別時播放的動畫.在呼叫的時候我們需要先判斷麥克風的許可權. - (void)getUserMicrophonePermissions{     int flag;     AVAuthorization

有關整合科大sdk的語音(一)帶語音的介面

最近專案需要整合語音這塊,我選擇了科大訊飛的sdk,IFlySpeechRecognizer是不帶介面的語音聽寫控制元件,顯示介面的時候需要使用者進行自定義語音動畫介面,IFlyRecognizerView是帶介面的控制元件.我會分別介紹這兩種顯示. 帶語音的介面: #impor

手把手的操作——用java呼叫科大的離線語音識別dll實現離線識別(JNA實現)(一)

#用java呼叫科大訊飛的離線語音識別dll實現離線識別(JNA實現)(一) 本人接的任務,做離線語音識別,用的是科大訊飛的離線識別,java不支援離線了,所以下載了windows的離線包,用JNA進行呼叫。之前用的是jni,但是一直沒有測試通過,本人又不會C++,研究了一個星期終究