41
41
SAMPLE_RATE = 16000
42
42
CHUNK_SIZE = int (SAMPLE_RATE / 10 ) # 100ms
43
43
44
- RED = ' \033 [0;31m'
45
- GREEN = ' \033 [0;32m'
46
- YELLOW = ' \033 [0;33m'
44
+ RED = " \033 [0;31m"
45
+ GREEN = " \033 [0;32m"
46
+ YELLOW = " \033 [0;33m"
47
47
48
48
49
49
def get_current_time ():
@@ -123,12 +123,14 @@ def generator(self):
123
123
if self .bridging_offset > self .final_request_end_time :
124
124
self .bridging_offset = self .final_request_end_time
125
125
126
- chunks_from_ms = round ((self .final_request_end_time -
127
- self .bridging_offset ) / chunk_time )
126
+ chunks_from_ms = round (
127
+ (self .final_request_end_time - self .bridging_offset )
128
+ / chunk_time
129
+ )
128
130
129
- self .bridging_offset = ( round ( (
130
- len (self .last_audio_input ) - chunks_from_ms )
131
- * chunk_time ) )
131
+ self .bridging_offset = round (
132
+ ( len (self .last_audio_input ) - chunks_from_ms ) * chunk_time
133
+ )
132
134
133
135
for i in range (chunks_from_ms , len (self .last_audio_input )):
134
136
data .append (self .last_audio_input [i ])
@@ -157,7 +159,7 @@ def generator(self):
157
159
except queue .Empty :
158
160
break
159
161
160
- yield b'' .join (data )
162
+ yield b"" .join (data )
161
163
162
164
163
165
def listen_print_loop (responses , stream ):
@@ -203,32 +205,35 @@ def listen_print_loop(responses, stream):
203
205
204
206
stream .result_end_time = int ((result_seconds * 1000 ) + (result_micros / 1000 ))
205
207
206
- corrected_time = (stream .result_end_time - stream .bridging_offset
207
- + (STREAMING_LIMIT * stream .restart_counter ))
208
+ corrected_time = (
209
+ stream .result_end_time
210
+ - stream .bridging_offset
211
+ + (STREAMING_LIMIT * stream .restart_counter )
212
+ )
208
213
# Display interim results, but with a carriage return at the end of the
209
214
# line, so subsequent lines will overwrite them.
210
215
211
216
if result .is_final :
212
217
213
218
sys .stdout .write (GREEN )
214
- sys .stdout .write (' \033 [K' )
215
- sys .stdout .write (str (corrected_time ) + ': ' + transcript + ' \n ' )
219
+ sys .stdout .write (" \033 [K" )
220
+ sys .stdout .write (str (corrected_time ) + ": " + transcript + " \n " )
216
221
217
222
stream .is_final_end_time = stream .result_end_time
218
223
stream .last_transcript_was_final = True
219
224
220
225
# Exit recognition if any of the transcribed phrases could be
221
226
# one of our keywords.
222
- if re .search (r' \b(exit|quit)\b' , transcript , re .I ):
227
+ if re .search (r" \b(exit|quit)\b" , transcript , re .I ):
223
228
sys .stdout .write (YELLOW )
224
- sys .stdout .write (' Exiting...\n ' )
229
+ sys .stdout .write (" Exiting...\n " )
225
230
stream .closed = True
226
231
break
227
232
228
233
else :
229
234
sys .stdout .write (RED )
230
- sys .stdout .write (' \033 [K' )
231
- sys .stdout .write (str (corrected_time ) + ': ' + transcript + ' \r ' )
235
+ sys .stdout .write (" \033 [K" )
236
+ sys .stdout .write (str (corrected_time ) + ": " + transcript + " \r " )
232
237
233
238
stream .last_transcript_was_final = False
234
239
@@ -240,34 +245,38 @@ def main():
240
245
config = speech .RecognitionConfig (
241
246
encoding = speech .RecognitionConfig .AudioEncoding .LINEAR16 ,
242
247
sample_rate_hertz = SAMPLE_RATE ,
243
- language_code = 'en-US' ,
244
- max_alternatives = 1 )
248
+ language_code = "en-US" ,
249
+ max_alternatives = 1 ,
250
+ )
251
+
245
252
streaming_config = speech .StreamingRecognitionConfig (
246
- config = config ,
247
- interim_results = True )
253
+ config = config , interim_results = True
254
+ )
248
255
249
256
mic_manager = ResumableMicrophoneStream (SAMPLE_RATE , CHUNK_SIZE )
250
257
print (mic_manager .chunk_size )
251
258
sys .stdout .write (YELLOW )
252
259
sys .stdout .write ('\n Listening, say "Quit" or "Exit" to stop.\n \n ' )
253
- sys .stdout .write (' End (ms) Transcript Results/Status\n ' )
254
- sys .stdout .write (' =====================================================\n ' )
260
+ sys .stdout .write (" End (ms) Transcript Results/Status\n " )
261
+ sys .stdout .write (" =====================================================\n " )
255
262
256
263
with mic_manager as stream :
257
264
258
265
while not stream .closed :
259
266
sys .stdout .write (YELLOW )
260
- sys .stdout .write ('\n ' + str (
261
- STREAMING_LIMIT * stream .restart_counter ) + ': NEW REQUEST\n ' )
267
+ sys .stdout .write (
268
+ "\n " + str (STREAMING_LIMIT * stream .restart_counter ) + ": NEW REQUEST\n "
269
+ )
262
270
263
271
stream .audio_input = []
264
272
audio_generator = stream .generator ()
265
273
266
- requests = (speech .StreamingRecognizeRequest (
267
- audio_content = content )for content in audio_generator )
274
+ requests = (
275
+ speech .StreamingRecognizeRequest (audio_content = content )
276
+ for content in audio_generator
277
+ )
268
278
269
- responses = client .streaming_recognize (streaming_config ,
270
- requests )
279
+ responses = client .streaming_recognize (streaming_config , requests )
271
280
272
281
# Now, put the transcription responses to use.
273
282
listen_print_loop (responses , stream )
@@ -281,11 +290,11 @@ def main():
281
290
stream .restart_counter = stream .restart_counter + 1
282
291
283
292
if not stream .last_transcript_was_final :
284
- sys .stdout .write (' \n ' )
293
+ sys .stdout .write (" \n " )
285
294
stream .new_stream = True
286
295
287
296
288
- if __name__ == ' __main__' :
297
+ if __name__ == " __main__" :
289
298
290
299
main ()
291
300
0 commit comments