Я хочу разработать приложение для распознавания голоса android с помощью сервисов gcloud. Но даже если я все делаю правильно, функция SpeechClient.create () не воспринимает мои учетные данные пользователя gcloud. Поэтому я понял, когда отлаживаю классы библиотеки, чтобы увидеть, что происходит, и когда я перехожу к файлу System. java, я понял, что много чего не хватает и функция getenv () (которая используется для получения переменной среды учетных данных файл) отсутствуют поля. Это приводит к неправильной работе функции. Я уже пробовал опцию «Недействительность и перезапуск» в Android Studio и удалил, а затем переустановил свой jdk.
Код, который я хочу скомпилировать. Он начинает слушать сразу после запуска приложения в течение 60 секунд c и возвращает транскрипцию. Я получаю сообщение об ошибке при попытке поймать и получаю: «Учетные данные приложения по умолчанию недоступны. Они доступны при работе в Google Compute Engine. В противном случае необходимо определить переменную среды GOOGLE_APPLICATION_CREDENTIALS, указывающую на файл, определяющий учетные данные». Я уже пробовал все, что написано на SO и некоторых других сайтах, но не сработало. Вероятно, это из-за моей проблемы с System. java, которая является системной библиотекой.
import android.os.Build;
import android.util.Log;
import androidx.annotation.RequiresApi;
import com.google.cloud.speech.v1.SpeechRecognitionResult;
import com.google.cloud.speech.v1.RecognitionAudio;
import com.google.cloud.speech.v1.RecognitionConfig;
import com.google.cloud.speech.v1.RecognitionConfig.AudioEncoding;
import com.google.cloud.speech.v1.RecognizeResponse;
import com.google.cloud.speech.v1.SpeechClient;
import com.google.cloud.speech.v1.SpeechRecognitionAlternative;
import com.google.protobuf.ByteString;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
@RequiresApi(api = Build.VERSION_CODES.O)
public class GCloudSpeechToText {
private static final String LOG_TAG = "GCLOUD SPEECH TO TEXT";
public void listen() {
try (SpeechClient speechClient = SpeechClient.create()) {
// The path to the audio file to transcribe
String fileName = "./resources/audio.raw";
// Reads the audio file into memory
Path path = Paths.get(fileName);
byte[] data = Files.readAllBytes(path);
ByteString audioBytes = ByteString.copyFrom(data);
// Builds the sync recognize request
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setSampleRateHertz(16000)
.setLanguageCode("tr-TR")
.build();
RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(audioBytes).build();
// Performs speech recognition on the audio file
RecognizeResponse response = speechClient.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for (SpeechRecognitionResult result : results) {
// There can be several alternative transcripts for a given chunk of speech. Just use the
// first (most likely) one here.
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
Log.d(LOG_TAG, "Transcription: " + alternative.getTranscript());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Во-вторых, изображения System. java. Они как 5 МБ, поэтому я делюсь ссылками
https://imgur.com/aYIJGrB https://imgur.com/yBLmgHp