добавь в код проверку, если ответ на “Приветствую! Что вы хотите найти?” не музыку и не песню, то отправь запрос в FreeGPT и проговори ее ответ: import os
import time
import speech_recognition as sr
import pyttsx3
import yt_dlp as youtube_dl
import pygame
import imageio_ffmpeg as ffmpeg


def speak(text):
    engine = pyttsx3.init()
    engine.say(text)
    engine.runAndWait()


# Инициация распознавания речи
recognizer = sr.Recognizer()


def listen_command():
    with sr.Microphone() as source:
        print("Listening for command…")
        audio = recognizer.listen(source)
        try:
            command = recognizer.recognize_google(audio, language="ru-RU")
            print(f"Command heard: {command}")
            return command.lower()
        except sr.UnknownValueError:
            # Если музыка не играет, произнесем сообщение об ошибке
            if not pygame.mixer.music.get_busy():
                speak("Я не понял ваш запрос")
            return ""
        except sr.RequestError:
            # Если музыка не играет, произнесем сообщение об ошибке
            if not pygame.mixer.music.get_busy():
                speak("Ошибка сервиса распознавания речи")
            return ""


def search_youtube(query):
    youtube_dl_opts = {
        'format': 'bestaudio/best',
        'noplaylist': True,
        'quiet': True,
        'outtmpl': 'song.%(ext)s',
        'ffmpeg_location': ffmpeg.get_ffmpeg_exe(),  # Используем путь к установленному ffmpeg
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
    }

    with youtube_dl.YoutubeDL(youtube_dl_opts) as ydl:
        info = ydl.extract_info("ytsearch1:" + query, download=True)
        return ydl.prepare_filename(info['entries'][0])


def list_commands():
    commands = [
        "песню или музыку - для поиска и воспроизведения песни",
        "продолжай - для продолжения воспроизведения",
        "пауза - для паузы воспроизведения",
        "стоп - для остановки воспроизведения и удаления песни",
        "включи - для воспроизведения песни",
        "найди - для поиска новой песни",
        "перестань слушать - для прекращения слушать команды",
        "слушай - для возобновления слушания команд",
        "команды - для воспроизведения этого списка команд"
    ]
    speak("Доступные команды: " + ", ".join(commands))


def main():
    pygame.init()
    pygame.mixer.init()
    speak("Приветствую! Что вы хотите найти?")

    current_song = None
    listening = True

    while True:
        if not listening:
            command = listen_command()
            if "слушай" in command:
                speak("Я снова слушаю.")
                listening = True
            else:
                continue

        command = listen_command()

        if "перестань слушать" in command:
            speak("Я перестаю слушать. Скажите 'Слушай', чтобы я снова начал слушать.")
            listening = False
            continue

        if "команды" in command:
            list_commands()

        elif "песню" in command or "музыку" in command:
            speak("Какую песню вы хотите услышать?")
            search_query = listen_command()

            if search_query:
                song_path = search_youtube(search_query)
                if song_path:
                    song_path = song_path.replace('.webm', '.mp3')  # Убедитесь, что файл имеет расширение mp3
                    if current_song:
                        pygame.mixer.music.stop()
                        time.sleep(1)  # Дождемся остановки воспроизведения, чтобы освободить файл
                        os.remove(current_song)
                    current_song = song_path
                    pygame.mixer.music.load(current_song)
                    pygame.mixer.music.play()
                    speak("Проигрываю песню " + search_query)
                else:
                    speak("Не удалось найти песню.")

        elif "продолжай" in command:
            if current_song and not pygame.mixer.music.get_busy():
                pygame.mixer.music.unpause()

        elif "пауза" in command:
            if current_song and pygame.mixer.music.get_busy():
                pygame.mixer.music.pause()

        elif "стоп" in command:
            if current_song:
                pygame.mixer.music.stop()
                time.sleep(1)  # Дождемся остановки воспроизведения, чтобы освободить файл
                os.remove(current_song)
                current_song = None

        elif "включи" in command:
            if current_song:
                pygame.mixer.music.play()

        elif "найди" in command:
            if current_song:
                pygame.mixer.music.stop()
                time.sleep(1)  # Дождемся остановки воспроизведения, чтобы освободить файл
                os.remove(current_song)
                current_song = None

            speak("Что вы хотите найти?")
            search_query = listen_command()

            if search_query:
                song_path = search_youtube(search_query)
                if song_path:
                    song_path = song_path.replace('.webm', '.mp3')  # Убедитесь, что файл имеет расширение mp3
                    current_song = song_path
                    pygame.mixer.music.load(current_song)
                    pygame.mixer.music.play()
                    speak("Проигрываю песню " + search_query)
                else:
                    speak("Не удалось найти песню.")


if __name__ == "__main__":
    main()