Я хочу создать приложение, которое принимает аудиофайл и понимает намерения говорящего.Я использую Dialogflow https://dialogflow.com/ для выполнения задачи.
Я попробовал этот код Java в Eclipse, и мне удалось получить намерение говорящего.
public static QueryResult detectIntentAudio(
String projectId,
byte[] audioData,
String sessionId,
String languageCode)
throws Exception {
// Instantiates a client
try (SessionsClient sessionsClient = SessionsClient.create()) {
// Set the session name using the sessionId (UUID) and projectID (my-project-id)
SessionName session = SessionName.of(projectId, sessionId);
System.out.println("Session Path: " + session.toString());
// Note: hard coding audioEncoding and sampleRateHertz for simplicity.
// Audio encoding of the audio content sent in the query request.
AudioEncoding audioEncoding = AudioEncoding.AUDIO_ENCODING_LINEAR_16;
int sampleRateHertz = 44100;
// Instructs the speech recognizer how to process the audio content.
InputAudioConfig inputAudioConfig = InputAudioConfig.newBuilder()
.setAudioEncoding(audioEncoding) // audioEncoding = AudioEncoding.AUDIO_ENCODING_LINEAR_16
.setLanguageCode(languageCode) // languageCode = "en-US"
.setSampleRateHertz(sampleRateHertz) // sampleRateHertz = 16000
.build();
// Build the query with the InputAudioConfig
QueryInput queryInput = QueryInput.newBuilder().setAudioConfig(inputAudioConfig).build();
// Read the bytes from the audio file
byte[] inputAudio = audioData;
//System.out.println("Path is:"+Paths.get(audioFilePath));
// Build the DetectIntentRequest
DetectIntentRequest request = DetectIntentRequest.newBuilder()
.setSession(session.toString())
.setQueryInput(queryInput)
.setInputAudio(ByteString.copyFrom(inputAudio))
.build();
// Performs the detect intent request
DetectIntentResponse response = sessionsClient.detectIntent(request);
// Display the query result
QueryResult queryResult = response.getQueryResult();
System.out.println("====================");
System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
System.out.format("Detected Intent: %s (confidence: %f)\n",
queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
System.out.format("Fulfillment Text: '%s'\n", queryResult.getFulfillmentText());
return queryResult;
}
}
ИЯ установил переменную среды GOOGLE_APPLICATION_CREDENTIALS в конфигурации запуска в Eclipse.
Однако, когда я пытаюсь запустить тот же код в Android Studio, я получаю следующую ошибку.
The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials.
У меня естьпеременная GOOGLE_APPLICATION_CREDENTIALS, установленная в моем ~ / .bashrc.Я попытался положить переменную в studio.vmoptions.Я не мог решить проблему.Любая помощь будет очень признательна.