Spaces:
Sleeping
Sleeping
| import sounddevice as sd | |
| import torch | |
| import time | |
| def play_stream(stream, sample_rate=32000): | |
| """ | |
| Play streamed audio chunks to speakers in real time. | |
| """ | |
| with sd.OutputStream( | |
| samplerate=sample_rate, | |
| channels=1, | |
| dtype='float32', | |
| blocksize=0 | |
| ) as out_stream: | |
| start = time.time() | |
| latency = None | |
| first = True | |
| for chunk in stream: | |
| if first: | |
| latency = time.time()-start | |
| first = False | |
| if isinstance(chunk, torch.Tensor): | |
| chunk = chunk.detach().cpu() | |
| # Ensure shape (N, 1) | |
| if chunk.dim() == 1: | |
| chunk = chunk.unsqueeze(1) | |
| elif chunk.dim() == 2 and chunk.shape[0] == 1: | |
| chunk = chunk.transpose(0, 1) | |
| out_stream.write(chunk.numpy()) | |
| return latency | |