1515*/
1616
1717package com.example.speech;
18-
19- import com.google.api.gax.grpc.ApiStreamObserver;
20- import com.google.api.gax.grpc.OperationFuture;
21- import com.google.api.gax.grpc.StreamingCallable;
18+ import com.google.api.gax.rpc.ApiStreamObserver;
19+ import com.google.api.gax.rpc.OperationFuture;
20+ import com.google.api.gax.rpc.StreamingCallable;
2221import com.google.cloud.speech.v1.LongRunningRecognizeMetadata;
2322import com.google.cloud.speech.v1.LongRunningRecognizeResponse;
2423import com.google.cloud.speech.v1.RecognitionAudio;
3231import com.google.cloud.speech.v1.StreamingRecognitionResult;
3332import com.google.cloud.speech.v1.StreamingRecognizeRequest;
3433import com.google.cloud.speech.v1.StreamingRecognizeResponse;
34+ import com.google.cloud.speech.v1.WordInfo;
3535import com.google.common.util.concurrent.SettableFuture;
36+ import com.google.longrunning.Operation;
3637import com.google.protobuf.ByteString;
37-
3838import java.io.IOException;
3939import java.nio.file.Files;
4040import java.nio.file.Path;
@@ -169,8 +169,9 @@ public static void asyncRecognizeFile(String fileName) throws Exception, IOExcep
169169 .build();
170170
171171 // Use non-blocking call for getting file transcription
172- OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata> response =
172+ OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata, Operation > response =
173173 speech.longRunningRecognizeAsync(config, audio);
174+
174175 while (!response.isDone()) {
175176 System.out.println("Waiting for response...");
176177 Thread.sleep(10000);
@@ -202,13 +203,14 @@ public static void asyncRecognizeGcs(String gcsUri) throws Exception, IOExceptio
202203 .setEncoding(AudioEncoding.FLAC)
203204 .setLanguageCode("en-US")
204205 .setSampleRateHertz(16000)
206+ .setEnableWordTimeOffsets(true)
205207 .build();
206208 RecognitionAudio audio = RecognitionAudio.newBuilder()
207209 .setUri(gcsUri)
208210 .build();
209211
210212 // Use non-blocking call for getting file transcription
211- OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata> response =
213+ OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata, Operation > response =
212214 speech.longRunningRecognizeAsync(config, audio);
213215 while (!response.isDone()) {
214216 System.out.println("Waiting for response...");
@@ -220,7 +222,12 @@ public static void asyncRecognizeGcs(String gcsUri) throws Exception, IOExceptio
220222 for (SpeechRecognitionResult result: results) {
221223 List<SpeechRecognitionAlternative> alternatives = result.getAlternativesList();
222224 for (SpeechRecognitionAlternative alternative: alternatives) {
223- System.out.printf("Transcription: %s%n", alternative.getTranscript());
225+ System.out.printf("Transcription: %s\n",alternative.getTranscript());
226+ for (WordInfo wordInfo: alternative.getWordsList()) {
227+ System.out.println(wordInfo.getWord());
228+ System.out.printf("\t%s ns - %s ns\n",
229+ wordInfo.getStartTime().getNanos(), wordInfo.getEndTime().getNanos());
230+ }
224231 }
225232 }
226233 speech.close();
0 commit comments