android studio google cloud speech api
> The audiofile is called "raw.wav" and is located under the resources directory
> Under the path "/raw/raw.wav"
> Credentials path is under "/raw/credentials.json"
>
~~~~build.gradle:
dependincies
{
//...
implementation 'com.google.cloud:google-cloud-speech:1.27.1'
implementation 'io.grpc:grpc-okhttp:1.37.0'
implementation 'io.grpc:grpc-protobuf:1.37.0'
implementation 'io.grpc:grpc-stub:1.37.0'
compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+
}
~~~~Code:
public class SpeechToText {
final int AUDIO_FILE_ID = R.raw.raw;
final int CREDENTIALS_FILE_ID = R.raw.credentials;
SpeechToText(Activity activity) throws Exception {
SpeechClient speech = null;
try {
InputStream credentialsStream = activity.getResources().openRawResource(CREDENTIALS_FILE_ID);
GoogleCredentials credentials = GoogleCredentials.fromStream(credentialsStream);
FixedCredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials);
SpeechSettings speechSettings =
SpeechSettings.newBuilder()
.setCredentialsProvider(credentialsProvider)
.build();
speech = SpeechClient.create(speechSettings);
InputStream is = activity.getResources().openRawResource(AUDIO_FILE_ID);
byte[] bytes = new byte[is.available()];
if(is.read(bytes) == 0)
{
throw new Exception("Didn't Read bytes from resource");
}
ByteString audioBytes = ByteString.copyFrom(bytes);
// Builds the sync recognize request
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setSampleRateHertz(44100)
.setLanguageCode("en-US")
.build();
RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(audioBytes).build();
// Performs speech recognition on the audio file
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for (SpeechRecognitionResult result : results) {
List<SpeechRecognitionAlternative> alternatives = result.getAlternativesList();
for (SpeechRecognitionAlternative alternative : alternatives) {
Log.d("Transcription: ", alternative.getTranscript()); //answer
}
}
speech.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}