Решение ошибки ImportError: BeamSearchScorer в Coqui TTS XTTS v2

При запуске скрипта синтеза речи на основе Coqui TTS XTTS v2 в среде Python 3.11 под Linux возникает ошибка импорта модуля BeamSearchScorer из библиотеки transformers. Проблема проявляется при попытке инициализации модели tts_models/multilingual/multi-dataset/xtts_v2.

Анализ проблемы

Трассировка ошибки указывает на несовместимость версий библиотек. Конкретно, модуль BeamSearchScorer был перемещён или переименован в более новых версиях transformers. Исходный код из стандартного README проекта Coqui TTS не работает "из коробки" с актуальными зависимостями.

Текст ошибки

ImportError: cannot import name 'BeamSearchScorer' from 'transformers'

Предлагаемые решения

Способ 1: Установка совместимых версий библиотек

Создайте новое виртуальное окружение и установите проверенные версии:

  • transformers == 4.30.2
  • TTS == 0.20.1
  • torch >= 2.0.0 (соответствующая вашей системе версия CUDA)

Команда для установки:

pip install transformers==4.30.2 TTS==0.20.1 torch torchaudio

Способ 2: Модификация кода для новых версий

Если необходимо использовать актуальные версии библиотек, потребуется патчинг. В файле stream_generator.py замените импорт:

Было:
from transformers import (BeamSearchScorer, ...)

Стало:
from transformers.generation import BeamSearchScorer

Полный путь к файлу в вашем случае: /home/sakair/Prog/jarvis/venv/lib/python3.11/site-packages/TTS/tts/layers/xtts/stream_generator.py

Способ 3: Использование альтернативной модели

Если решение с XTTS v2 критично, рассмотрите временный переход на другие модели из списка, доступного через TTS().list_models(), пока проблема не будет исправлена в основном репозитории.

Проверка решения

После применения одного из методов выполните минимальный тестовый скрипт:

from TTS.api import TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", progress_bar=False)
print("Модель успешно загружена")

Дополнительные рекомендации

  • Проверьте наличие обновлений Coqui TTS на GitHub - проблема может быть уже решена в новых коммитах
  • Для production-использования зафиксируйте версии всех зависимостей в requirements.txt
  • Убедитесь, что файл ok.wav существует в директории скрипта и имеет корректный формат