Google Speech API возвращает NULL

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

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 в API Google) я получаю как "{" result ": []}" Вместо высказываний аудиофайла, преобразованного в текст, в каких случаях Google возвращает результат как "{"результат":[]}"?

введите здесь описание изображения


person Vinod    schedule 11.02.2016    source источник
comment
Возможный дубликат результата API распознавания речи Google пуст   -  person Nikolay Shmyrev    schedule 16.02.2017


Ответы (1)


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

person Kristofer Källsbo    schedule 12.02.2016
comment
Каллсбо: Я сделал, как посоветовали, но все та же проблема, добавил измененный снимок экрана. - person Vinod; 12.02.2016
comment
Из того, что я вижу на вашем скриншоте, размер файла составляет 44100 Гц, но вы указываете в коде, что это 16000, это может быть вашей проблемой. Я также хотел бы проверить, что вы действительно отправляете данные на сервер. Я плохо разбираюсь в java, но вот пример C #: hackviking.com/development/google-speech-api-returns-no-result - person Kristofer Källsbo; 12.02.2016
comment
Буду менять частоту и проверять - person Vinod; 13.02.2016
comment
Спасибо, Кристофер, за свою работу, но я получаю два результата: {result: []} {result: [{альтернатива: [{расшифровка: доброе утро, Google, как вы себя чувствуете сегодня, уверенность: 0.88946682}], final: true}], result_index: 0} есть идеи, почему? - person Vinod; 13.02.2016
comment
Привет, да, я тоже видел это во многих случаях, и, насколько я могу сказать, много других разработчиков. Извините, я понятия не имею, почему он так себя ведет. - person Kristofer Källsbo; 13.02.2016