37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import logging
|
|
|
|
from aiogram import Router, F
|
|
from aiogram.types import Message
|
|
|
|
from bot.utils.voice import download_voice, convert_to_wav, transcribe_audio, normalize_text, cleanup_files
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
router = Router()
|
|
|
|
|
|
@router.message(F.voice)
|
|
async def handle_voice(message: Message):
|
|
status_msg = await message.answer("🎤 Распознаю речь...")
|
|
|
|
ogg_path = None
|
|
wav_path = None
|
|
|
|
try:
|
|
ogg_path = await download_voice(message.bot, message.voice.file_id)
|
|
wav_path = await convert_to_wav(ogg_path)
|
|
text = await transcribe_audio(wav_path)
|
|
|
|
if not text:
|
|
await status_msg.edit_text("❌ Не удалось распознать речь.")
|
|
return
|
|
|
|
text = normalize_text(text)
|
|
await status_msg.edit_text(f"📝 {text}")
|
|
|
|
except Exception as e:
|
|
logger.exception("Voice processing error")
|
|
await status_msg.edit_text("❌ Ошибка при обработке голосового сообщения.")
|
|
finally:
|
|
await cleanup_files(ogg_path, wav_path)
|