|
@@ -528,10 +528,11 @@ class Worker:
|
|
|
"""Drain TTS audio sequentially on the single track."""
|
|
"""Drain TTS audio sequentially on the single track."""
|
|
|
while True:
|
|
while True:
|
|
|
g, audio = await play_q.get()
|
|
g, audio = await play_q.get()
|
|
|
|
|
+ logger.info("PLAY start gen=%d samples=%d", g, len(audio))
|
|
|
cur_gen["v"] = g
|
|
cur_gen["v"] = g
|
|
|
for i in range(0, len(audio), 24000 // 50):
|
|
for i in range(0, len(audio), 24000 // 50):
|
|
|
if cur_gen["v"] != g:
|
|
if cur_gen["v"] != g:
|
|
|
- break # a newer turn started; drop this stale audio
|
|
|
|
|
|
|
+ break
|
|
|
c = audio[i: i + 24000 // 50]
|
|
c = audio[i: i + 24000 // 50]
|
|
|
await tts_src.capture_frame(rtc.AudioFrame(
|
|
await tts_src.capture_frame(rtc.AudioFrame(
|
|
|
data=c.tobytes(), sample_rate=24000,
|
|
data=c.tobytes(), sample_rate=24000,
|
|
@@ -539,6 +540,7 @@ class Worker:
|
|
|
))
|
|
))
|
|
|
await asyncio.sleep(0.018)
|
|
await asyncio.sleep(0.018)
|
|
|
cur_gen["v"] = -1
|
|
cur_gen["v"] = -1
|
|
|
|
|
+ logger.info("PLAY end gen=%d", g)
|
|
|
|
|
|
|
|
player_task = asyncio.create_task(_player())
|
|
player_task = asyncio.create_task(_player())
|
|
|
|
|
|