Google 语音 API returns NULL
Google Speech API returns NULL
尝试使用 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();
}
}
}
但是在 运行 之后 class(将 .flac 文件发送到 Google api)我得到的是“{"result":[]} " 而不是将音频文件的话语转换为文本,在什么情况下 Google returns 结果为“{"result":[]}”?
运行 我自己也遇到了同样的问题。我发现那是 flac 文件的格式。它需要是 16 位 PCM 和单声道,否则你会得到空结果。我使用 http://www.audacityteam.org/ 来 check/convert 我的文件。
尝试使用 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();
}
}
}
但是在 运行 之后 class(将 .flac 文件发送到 Google api)我得到的是“{"result":[]} " 而不是将音频文件的话语转换为文本,在什么情况下 Google returns 结果为“{"result":[]}”?
运行 我自己也遇到了同样的问题。我发现那是 flac 文件的格式。它需要是 16 位 PCM 和单声道,否则你会得到空结果。我使用 http://www.audacityteam.org/ 来 check/convert 我的文件。