rrevo commited on
Commit
2cdfea2
·
1 Parent(s): b932faf
Files changed (1) hide show
  1. client/src/main.py +62 -62
client/src/main.py CHANGED
@@ -37,77 +37,77 @@ def main(transcriptions_queue):
37
  with microphone:
38
  speech_recognizer.adjust_for_ambient_noise(source=microphone)
39
 
40
- def record_callback(_, audio: sr.AudioData) -> None:
41
- data = audio.get_raw_data()
42
- data_queue.put(data)
43
-
44
- speech_recognizer.listen_in_background(source=microphone, callback=record_callback, phrase_time_limit=recording_duration)
45
-
46
- print("\n🎤 Microphone is now listening...\n")
47
-
48
- prev_audio_array = None
49
- current_audio_chunk = AudioChunk(start_time=datetime.now(tz=UTC))
50
-
51
- while True:
52
- try:
53
- now = datetime.now(tz=UTC)
54
- # Pull raw recorded audio from the queue.
55
- if not data_queue.empty():
56
- # Store end time if we're over the recording time limit.
57
- if now - current_audio_chunk.start_time > timedelta(seconds=recording_duration):
58
- current_audio_chunk.end_time = now
59
-
60
- # Get audio data from queue
61
- audio_data = get_all_audio_queue(data_queue)
62
- audio_np_array = to_audio_array(audio_data)
63
-
64
- if current_audio_chunk.is_complete:
65
- print('start serialize')
66
- if prev_audio_array is not None:
67
- serialized = pickle.dumps(
68
- np.concatenate((
69
- prev_audio_array,
70
- current_audio_chunk.audio_array
71
- ))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  )
 
73
  else:
74
- serialized = pickle.dumps(current_audio_chunk.audio_array)
75
- prev_audio_array = current_audio_chunk.audio_array
76
- print('end serialize')
77
 
78
- start = time.time()
79
- print('start req')
80
- response = httpx.post(TRANSCRIBING_SERVER, data=serialized)
81
- transcription = response.json()['transcribe']
82
- print('req done', response.text, response.status_code, time.time() - start)
83
- transcriptions_queue.put(transcription)
84
 
 
 
 
 
 
 
85
  # text = transcribe_model.transcribe(current_audio_chunk.audio_array)
86
  # sentence = Sentence(
87
  # start_time=current_audio_chunk.start_time, end_time=current_audio_chunk.end_time, text=text
88
  # )
89
- current_audio_chunk = AudioChunk(
90
- audio_array=audio_np_array, start_time=datetime.now(tz=UTC)
91
- )
92
  # print(sentence.text) # noqa: T201
93
- else:
94
- current_audio_chunk.update_array(audio_np_array)
95
-
96
- # Flush stdout
97
- print("", end="", flush=True) # noqa: T201
98
-
99
- # Infinite loops are bad for processors, must sleep.
100
- sleep(0.25)
101
- except KeyboardInterrupt:
102
- current_audio_chunk.end_time = datetime.now(tz=UTC)
103
- if current_audio_chunk.is_complete:
104
- logger.warning("⚠️ Transcribing last chunk...")
105
- # text = transcribe_model.transcribe(current_audio_chunk.audio_array)
106
- # sentence = Sentence(
107
- # start_time=current_audio_chunk.start_time, end_time=current_audio_chunk.end_time, text=text
108
- # )
109
- # print(sentence.text) # noqa: T201
110
- break
111
 
112
 
113
  # for i in range(minimum, maximum + 1):
 
37
  with microphone:
38
  speech_recognizer.adjust_for_ambient_noise(source=microphone)
39
 
40
+ def record_callback(_, audio: sr.AudioData) -> None:
41
+ data = audio.get_raw_data()
42
+ data_queue.put(data)
43
+
44
+ speech_recognizer.listen_in_background(source=microphone, callback=record_callback, phrase_time_limit=recording_duration)
45
+
46
+ print("\n🎤 Microphone is now listening...\n")
47
+
48
+ prev_audio_array = None
49
+ current_audio_chunk = AudioChunk(start_time=datetime.now(tz=UTC))
50
+
51
+ while True:
52
+ try:
53
+ now = datetime.now(tz=UTC)
54
+ # Pull raw recorded audio from the queue.
55
+ if not data_queue.empty():
56
+ # Store end time if we're over the recording time limit.
57
+ if now - current_audio_chunk.start_time > timedelta(seconds=recording_duration):
58
+ current_audio_chunk.end_time = now
59
+
60
+ # Get audio data from queue
61
+ audio_data = get_all_audio_queue(data_queue)
62
+ audio_np_array = to_audio_array(audio_data)
63
+
64
+ if current_audio_chunk.is_complete:
65
+ print('start serialize')
66
+ if prev_audio_array is not None:
67
+ serialized = pickle.dumps(
68
+ np.concatenate((
69
+ prev_audio_array,
70
+ current_audio_chunk.audio_array
71
+ ))
72
+ )
73
+ else:
74
+ serialized = pickle.dumps(current_audio_chunk.audio_array)
75
+ prev_audio_array = current_audio_chunk.audio_array
76
+ print('end serialize')
77
+
78
+ start = time.time()
79
+ print('start req')
80
+ response = httpx.post(TRANSCRIBING_SERVER, data=serialized)
81
+ transcription = response.json()['transcribe']
82
+ print('req done', response.text, response.status_code, time.time() - start)
83
+ transcriptions_queue.put(transcription)
84
+
85
+ # text = transcribe_model.transcribe(current_audio_chunk.audio_array)
86
+ # sentence = Sentence(
87
+ # start_time=current_audio_chunk.start_time, end_time=current_audio_chunk.end_time, text=text
88
+ # )
89
+ current_audio_chunk = AudioChunk(
90
+ audio_array=audio_np_array, start_time=datetime.now(tz=UTC)
91
  )
92
+ # print(sentence.text) # noqa: T201
93
  else:
94
+ current_audio_chunk.update_array(audio_np_array)
 
 
95
 
96
+ # Flush stdout
97
+ print("", end="", flush=True) # noqa: T201
 
 
 
 
98
 
99
+ # Infinite loops are bad for processors, must sleep.
100
+ sleep(0.25)
101
+ except KeyboardInterrupt:
102
+ current_audio_chunk.end_time = datetime.now(tz=UTC)
103
+ if current_audio_chunk.is_complete:
104
+ logger.warning("⚠️ Transcribing last chunk...")
105
  # text = transcribe_model.transcribe(current_audio_chunk.audio_array)
106
  # sentence = Sentence(
107
  # start_time=current_audio_chunk.start_time, end_time=current_audio_chunk.end_time, text=text
108
  # )
 
 
 
109
  # print(sentence.text) # noqa: T201
110
+ break
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
 
113
  # for i in range(minimum, maximum + 1):