Android проблема с Google Cloud Speech-to-Text API
Всем доброго времени суток! При разработке приложения столкнулся со следующей проблемой: есть аудио файл с раcширением .wav, который необходимо рспознать при помощи Cloud Speech-to-Text API. После использования кода, приведённого ниже (Это только часть кода активности: onActivityResult относится к записи речи)
Часть кода
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_RECORD_AUDIO) {
if (resultCode == RESULT_OK) {
final File initialFile = new File(voice_path);
try {
targetStream = new DataInputStream(new FileInputStream(initialFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (initialFile.exists()) {
byte[] fileContent = new byte[0];
try {
fileContent = FileUtils.readFileToByteArray(initialFile);
} catch (IOException e) {
e.printStackTrace();
}
voic_base64 = Base64.encodeBase64String(fileContent);
Log.i("BASE64AUDIO", voic_base64);
sendRecognition SR = new sendRecognition();
SR.execute();
}
}
}}
class sendRecognition extends AsyncTask{
SyncRecognizeRequest request;
Speech speechService;
SyncRecognizeResponse response;
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
SyncRecognizeResponse response = null;
}
@Override
protected Object doInBackground(Object[] objects) {
speechService = new Speech.Builder(
AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(),
null
)
.setSpeechRequestInitializer(new SpeechRequestInitializer(CLOUD_API_KEY))
.setApplicationName("STTMessenger")
.build();
RecognitionConfig recognitionConfig = new RecognitionConfig();
recognitionConfig.setLanguageCode("ru-RU");
RecognitionAudio recognitionAudio = new RecognitionAudio();
if(voic_base64!=null) recognitionAudio.setContent(voic_base64);
// Create request
request = new SyncRecognizeRequest();
request.setConfig(recognitionConfig);
request.setAudio(recognitionAudio);
if(request!=null){
try {
response = speechService.speech()
.syncrecognize(request)
.execute();
} catch (IOException e) {
e.printStackTrace();
}
}
// Extract transcript
if(response!=null) {
Log.i("ПРОВЕРКА12","--");
SpeechRecognitionResult result = response.getResults().get(0);
final String transcript = result.getAlternatives().get(0)
.getTranscript();
Log.i("TRANSCRIPTED", transcript);
}
return null;
}
}
}
Вот код самой ошибки
W/System.err: javax.net.ssl.SSLException: Write error: ssl=0xaa3baf00: I/O error during system call, Broken pipe
W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_write(Native Method)
at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:786)
at com.android.okhttp.okio.Okio$1.write(Okio.java:76)
W/System.err: at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
at com.android.okhttp.okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
at com.android.okhttp.okio.RealBufferedSink.write(RealBufferedSink.java:46)
at com.android.okhttp.internal.http.HttpConnection$FixedLengthSink.write(HttpConnection.java:302)
at com.android.okhttp.okio.RealBufferedSink.close(RealBufferedSink.java:238)
at com.android.okhttp.okio.RealBufferedSink$1.close(RealBufferedSink.java:213)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:81)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
W/System.err: at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.example.sttmmessenger.Perepiska$senReqPt2.doInBackground(Perepiska.java:488)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Код ошибки ссылается на
response = speechService.speech()
.syncrecognize(request)
.execute();
Не могу понять, в чём проблема? Где копать?