diff --git a/telegram_bot/handlers/audio_handler.py b/telegram_bot/handlers/audio_handler.py index 0d9b24d..06af3f0 100644 --- a/telegram_bot/handlers/audio_handler.py +++ b/telegram_bot/handlers/audio_handler.py @@ -1,4 +1,5 @@ import os +import subprocess import uuid from functools import partial from aiogram import types, Dispatcher, F @@ -77,7 +78,7 @@ async def handle_voice_and_video(message: types.Message, redis_service, storage_ else: await message.reply("Sorry, transcription result was not received within the timeout.") -def convert_to_wav(input_file: str, output_file: str): +def convert_to_wav1(input_file: str, output_file: str): """ Конвертирует любой аудио/видеофайл в .wav с частотой 16kHz, 1 канал (моно). """ @@ -92,6 +93,30 @@ def convert_to_wav(input_file: str, output_file: str): except Exception as e: print(f"Error converting {input_file} to WAV: {e}") +def convert_to_wav(input_file: str, output_file: str): + """ + Конвертирует любой аудиофайл в WAV с частотой 16kHz, 1 канал (моно). + Логирует ошибки FFmpeg. + """ + try: + logging.debug(f"🔄 Конвертация: {input_file} -> {output_file}") + + command = [ + "ffmpeg", "-y", "-i", input_file, + "-ar", "16000", "-ac", "1", "-c:a", "pcm_s16le", + output_file + ] + + result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + if result.returncode != 0: + logging.error(f"❌ Ошибка FFmpeg:\n{result.stderr.decode()}") + else: + logging.debug(f"✅ FFmpeg успешно создал файл {output_file}") + + except Exception as e: + logging.error(f"❌ Исключение при конвертации {input_file}: {e}") + def register_audio_handlers(dp: Dispatcher, redis_service, storage_path: str): # Оборачиваем callback для передачи дополнительных аргументов handler_callback = partial(handle_voice_and_video, redis_service=redis_service, storage_path=storage_path)