помоги пожалуйста решить проблему, в tkinter когда модель присылает сообщение, озвучивается только первое слово а затем tkinter закрывается, в консоли никаких ошибок нет "import google.generativeai as genai
import requests
from pydub import AudioSegment
from pydub.playback import play
import tkinter as tk
from tkinter import scrolledtext
from threading import Thread
import re
import tempfile
import os

# API ключи
genai.configure(api_key="YOUR_GEMINI_API_KEY")

# Gemini 1.5 Flash модель
model = genai.GenerativeModel('gemini-1.5-flash-latest')

# Указываем путь к ffmpeg
AudioSegment.converter = "C:\\ffmpeg\\bin\\ffmpeg.exe"  # Укажи свой путь
AudioSegment.ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg.exe"  # Укажи свой путь
AudioSegment.ffprobe = "C:\\ffmpeg\\bin\\ffprobe.exe"  # Укажи свой путь

def get_gemini_response(input_text):
    response = model.generate_content(input_text)
    return response.text

def split_text_into_sentences(text):
    """Разделяет текст на предложения."""
    sentences = re.split(r'(?<=[\.\!\?])\s+', text)
    return sentences

def speak_text(text):
    """Озвучивает текст, используя streaming API ElevenLabs и pydub."""
    sentences = split_text_into_sentences(text)

    for sentence in sentences:
        try:
            headers = {
                "Accept": "audio/mpeg",
                "Content-Type": "application/json",
                "xi-api-key": "YOUR_ELEVENLABS_API_KEY",
            }

            data = {
                "text": sentence + " ",
                "model_id": "eleven_multilingual_v2",
                "voice_settings": {
                    "stability": 0.5,
                    "similarity_boost": 0.5,
                },
            }

            url = "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM/stream"
            response = requests.post(url, json=data, headers=headers, stream=True)

            if response.status_code == 200:
                # Создаем временный файл
                with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
                    for chunk in response.iter_content(chunk_size=4096):
                        if chunk:
                            tmp_file.write(chunk)
                    tmp_filename = tmp_file.name

                # Воспроизводим временный файл с помощью pydub
                audio = AudioSegment.from_file(tmp_filename, format="mp3")
                play(audio)

                # Удаляем временный файл
                os.remove(tmp_filename)

            else:
                print(f"Ошибка ElevenLabs: {response.status_code} - {response.text}")

        except Exception as e:
            print(f"Ошибка: {e}")

def handle_input():
    user_input = input_entry.get()
    input_entry.delete(0, tk.END)

    if user_input.strip() != "":
        chat_history.config(state=tk.NORMAL)
        chat_history.insert(tk.END, f"Вы: {user_input}\n\n")
        chat_history.config(state=tk.DISABLED)

        def get_and_display_response():
            gemini_response = get_gemini_response(user_input)

            chat_history.config(state=tk.NORMAL)
            chat_history.insert(tk.END, f"Ассистент: {gemini_response}\n\n")
            chat_history.config(state=tk.DISABLED)
            chat_history.see(tk.END)

            # Создаем и запускаем поток для озвучки
            speak_thread = Thread(target=speak_text, args=(gemini_response,))
            speak_thread.start()

            # Ждем завершения потока озвучки
            speak_thread.join()

        Thread(target=get_and_display_response).start()

# Создание основного окна
window = tk.Tk()
window.title("Голосовой ассистент")

# Текстовое поле для истории чата
chat_history = scrolledtext.ScrolledText(window, wrap=tk.WORD, state=tk.DISABLED)
chat_history.pack(expand=True, fill="both")

# Поле ввода
input_entry = tk.Entry(window)
input_entry.pack(expand=True, fill="x")

# Кнопка отправки
send_button = tk.Button(window, text="Отправить", command=handle_input)
send_button.pack()

# Привязка Enter к полю ввода
input_entry.bind("<Return>", lambda event: handle_input())

window.mainloop()"