| import numpy as np | |
| import sounddevice as sd | |
| import time | |
| def play_audio(audio_data: np.ndarray, sample_rate: int = 24000): | |
| """ | |
| Play audio directly using sounddevice. | |
| Args: | |
| audio_data (np.ndarray): The audio data to play. | |
| sample_rate (int, optional): The sample rate of the audio data. Defaults to 24000. | |
| """ | |
| try: | |
| sd.play(audio_data, sample_rate) | |
| sd.wait() | |
| except Exception as e: | |
| print(f"Error playing audio: {str(e)}") | |
| def stream_audio_chunks( | |
| audio_chunks: list, sample_rate: int = 24000, pause_duration: float = 0.2 | |
| ): | |
| """ | |
| Stream audio chunks one after another with a small pause between them. | |
| Args: | |
| audio_chunks (list): A list of audio chunks to play. | |
| sample_rate (int, optional): The sample rate of the audio data. Defaults to 24000. | |
| pause_duration (float, optional): The duration of the pause between chunks in seconds. Defaults to 0.2. | |
| """ | |
| try: | |
| for chunk in audio_chunks: | |
| if len(chunk) == 0: | |
| continue | |
| sd.play(chunk, sample_rate) | |
| sd.wait() | |
| time.sleep(pause_duration) | |
| except Exception as e: | |
| print(f"Error streaming audio chunks: {str(e)}") | |
| finally: | |
| sd.stop() | |