2016-02-11 7 views
0

Попытка разработать речи в текст приложения с помощью API Google с ниже кодGoogle Speech API возвращает NULL

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import org.testng.annotations.Test; 

public class Speech2Text_Test { 
@Test 
public void f() { 

    try{ 
    Path path = Paths.get("out.flac"); 
    byte[] data = Files.readAllBytes(path); 

    String request = "https://www.google.com/"+ 
     "speech-api/v2/recognize?"+ 
     "xjerr=1&client=speech2text&lang=en-US&maxresults=10"+ 
     "output=json&key=<My Key>"; 

    URL url = new URL(request); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();   
    connection.setDoOutput(true); 
    connection.setDoInput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("Content-Type", "audio/x-flac; rate=16000"); 
    connection.setRequestProperty("User-Agent", "speech2text"); 
    connection.setConnectTimeout(60000); 
    connection.setUseCaches (false); 

    DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 
    wr.close(); 
    connection.disconnect(); 

    System.out.println("Done"); 

    BufferedReader in = new BufferedReader(
     new InputStreamReader(
     connection.getInputStream())); 
     String decodedString; 
     while ((decodedString = in.readLine()) != null) { 
     System.out.println(decodedString); 
     } 

    } 
    catch(Exception e){ 
    e.printStackTrace(); 
    } 

    } 
} 

однако после того, как работает класс (который посылает .flac файл в Google API) я получаю, как «{» result ": []}" Вместо высказываний аудиофайла, преобразованного в текст, каковы могут быть случаи, когда Google возвращает результат как "{" result ": []}"?

enter image description here

+0

Возможный дубликат [Google API речевого распознавания ошибок пуст] (http://stackoverflow.com/questions/38906527/google-speech-recognition-api-result-is-empty) –

ответ

2

Столкнулся же вопрос мой себе. Я обнаружил, что это был формат файла flac. Он должен быть 16-битным PCM и моно, иначе вы получите нулевой результат. Я использую http://www.audacityteam.org/ для проверки/преобразования моих файлов.

+0

Kallsbo: Я так же посоветовал по-прежнему та же проблема, добавил измененный снимок экрана. – Vinod

+1

Из того, что я вижу на скриншоте, файл 44100hz, но вы указываете в коде, что это 16000, это может быть вашей проблемой. Я также буду против, что вы действительно отправляете данные на сервер. Я не хорошо разбираюсь в java, но вот пример C#: http://www.hackviking.com/development/google-speech-api-returns-no-result/ –

+0

Изменит частоту и отметит – Vinod

Смежные вопросы