Spaces:
Sleeping
Sleeping
| """ | |
| Audio processing utilities for TTS service. | |
| """ | |
| import io | |
| import tempfile | |
| import os | |
| from .config import image | |
| with image.imports(): | |
| import torchaudio as ta | |
| class AudioUtils: | |
| """Helper class for audio processing operations.""" | |
| def save_audio_to_buffer(wav_tensor, sample_rate: int) -> io.BytesIO: | |
| """ | |
| Save audio tensor to BytesIO buffer. | |
| Args: | |
| wav_tensor: Audio tensor to save | |
| sample_rate: Sample rate of the audio | |
| Returns: | |
| BytesIO buffer containing WAV audio data | |
| """ | |
| buffer = io.BytesIO() | |
| ta.save(buffer, wav_tensor, sample_rate, format="wav") | |
| buffer.seek(0) | |
| return buffer | |
| def save_temp_audio_file(audio_data: bytes) -> str: | |
| """ | |
| Save uploaded audio data to a temporary file. | |
| Args: | |
| audio_data: Raw audio data bytes | |
| Returns: | |
| Path to the temporary audio file | |
| """ | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_file: | |
| temp_file.write(audio_data) | |
| return temp_file.name | |
| def cleanup_temp_file(file_path: str) -> None: | |
| """ | |
| Clean up temporary audio file. | |
| Args: | |
| file_path: Path to the temporary file to delete | |
| """ | |
| try: | |
| if file_path and os.path.exists(file_path): | |
| os.unlink(file_path) | |
| except Exception as e: | |
| print(f"Warning: Failed to cleanup temp file {file_path}: {e}") | |