0

尝试使用带有以下代码的 Google 的 API 开发语音到文本的应用程序

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 将结果返回为“{“结果”:[]}”?

在此处输入图像描述

4

1 回答 1

3

我自己也遇到了同样的问题。我发现这是flac文件的格式。它需要是 16 位 PCM 和单声道,否则你会得到空结果。我使用http://www.audacityteam.org/检查/转换我的文件。

于 2016-02-12T00:19:19.490 回答