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}") | |