import telebot
import vosk
from pydub import AudioSegment
import wave
import tempfile
import librosa
import soundfile as sf
import json


def recognize_speech(audio_file):
    """
    Распознает речь в заданном аудиофайле.

    Поддерживаемые форматы: WAV, OGG.

    Parameters:
        audio_file (str): путь к аудиофайлу.

    Returns:
        str: распознанный текст.
    """

    # Проверка формата файла и его расширения
    if not audio_file.lower().endswith(('.wav', '.ogg')):
        raise Exception("Неподдерживаемый формат аудиофайла.")

    try:
        # Устанавливаем частоту дискретизации
        with wave.open(audio_file, "rb") as wave_file:
            frame_rate = wave_file.getframerate()
        samplerate = frame_rate

        # Загружаем аудиофайл
        try:
            audio = AudioSegment.from_file(audio_file, format="ogg")
        except:
            audio = AudioSegment.from_file(audio_file, format="wav")

        # Преобразуем аудио в нужный формат
        with tempfile.TemporaryFile() as temp_file:
            if audio_file.lower().endswith('.ogg'):
                audio.export(temp_file, format="ogg")
            else:
                audio.export(temp_file, format="wav")
            temp_file.seek(0)
            data = temp_file.read()

        # Создаем экземпляр распознавателя речи
        rec = vosk.KaldiRecognizer(model, samplerate)

        # Обрабатываем аудиофайл
        if rec.AcceptWaveform(data):
            result = json.loads(rec.Result())['text']
        else:
            result = "Ваше сообщение не распознано, попробуйте еще раз"

        return result

    except Exception as e:
        print(f"Ошибка: {e}")
        return "Сообщение не распознано, попробуйте еще раз"


# Создаем экземпляр бота
bot = telebot.TeleBot('6155963192:AAEH-0B6O8goqkdZvftLgiQez9YEPJFjVA4')

# Создаем экземпляр модели Vosk
model = vosk.Model("model")


# Определяем обработчик для команды /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
    bot.reply_to(message, "Привет! Я могу распознавать речь в голосовых сообщениях. Пришли мне голосовое сообщение.")


# Определяем обработчик для голосовых сообщений
@bot.message_handler(content_types=['voice'])
def handle_voice(message):
    # получение аудио-файла из сообщения
    file_info = bot.get_file(message.voice.file_id)
    downloaded_file = bot.download_file(file_info.file_path)

    # сохранение файла на диск
    file_id = message.voice.file_id
    file_name = f'{file_id}.ogg'
    with open(file_name, 'wb') as new_file:
        new_ Please reply with exactly 6 paragraphs and separate each paragraph with two new lines. The very first paragraph must start with the word "guarantee".
user