Skip to content

Commit 3993527

Browse files
committed
Implement non-blocking voice transmission to the daily room
1 parent ba16f2b commit 3993527

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

vapi_python/daily_call.py

+17-15
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ def __init__(self):
2222

2323
self.__audio_interface = pyaudio.PyAudio()
2424

25-
self.__input_audio_stream = self.__audio_interface.open(
26-
format=pyaudio.paInt16,
27-
channels=NUM_CHANNELS,
28-
rate=SAMPLE_RATE,
29-
input=True,
30-
frames_per_buffer=CHUNK_SIZE,
31-
)
25+
self.__input_audio_stream = None
3226

3327
self.__output_audio_stream = self.__audio_interface.open(
3428
format=pyaudio.paInt16,
@@ -140,14 +134,22 @@ def send_user_audio(self):
140134
print(f"Unable to receive mic audio!")
141135
return
142136

143-
while not self.__app_quit:
144-
buffer = self.__input_audio_stream.read(
145-
CHUNK_SIZE, exception_on_overflow=False)
146-
if len(buffer) > 0:
147-
try:
148-
self.__mic_device.write_frames(buffer)
149-
except Exception as e:
150-
print(e)
137+
def callback(in_data, frame_count, time_info, status):
138+
if self.__app_quit:
139+
return (None, pyaudio.paComplete)
140+
self.__mic_device.write_frames(in_data)
141+
return (in_data, pyaudio.paContinue)
142+
143+
# directly stream the sound
144+
self.__input_audio_stream = self.__audio_interface.open(
145+
format=pyaudio.paInt16,
146+
channels=NUM_CHANNELS,
147+
rate=SAMPLE_RATE,
148+
input=True,
149+
frames_per_buffer=CHUNK_SIZE,
150+
stream_callback=callback
151+
)
152+
151153

152154
def receive_bot_audio(self):
153155
self.__start_event.wait()

0 commit comments

Comments
 (0)