Автор Гілка: Генератор мови з українського тексту  (Прочитано 2988 раз)

Відсутній gen

  • Новачок
  • *
  • дописів: 4
  • Карма: +2/-0
Маю звичку робити аудіофайли з книг та статей, які хочу прочитати.
Для англійської - flite та espeak видають в більшості випадків прийнятну якість.
З українською складніше, україномовні моделі просто пропускають англійські слова та вирази з спеціальними символами.
Найкраще, що я зустрів - це вбудована в Андроїд TTS система.
Її можна використати на Андроїд-телефоні, наприклад, через termux-tts-speak -l uk "текст".
Наприклад, вставте у файл текст зі сторінки https://go-tour-ua-translation.lm.r.appspot.com/welcome/1 і виконайте termux-tts-speak -l uk "$(<welcome.txt)" і почуйте якісну озвучку, яка доволі чітко позначає вирази англійською і спецсимволи.
Нажаль, ця команда зараз не дає можливості зберегти аудіо у файл, та й потребує пристрій на Android.
Я трохи пошукав, як влаштовано цей функціонал Андроїда, і прийшов до думки, що він базується на Pico TTS. Це вільне ПЗ, але на лінуксі я не зміг досягнути якісних результатів для українських текстів.

Чи досягав хто-небудь більших успіхів у цьому?

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3628
  • Карма: +2/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Для espeak-ng працює суміш, але голос якийсь трохи того... Натренований машинним навчанням і трохи неприродний.

https://odo.lv/Espeak

Сумніваюся, що це можна витримувати довго.

У мережі повно шматків коду, які користуються API хмари Google для отримання звукових файлів, але їхню працездатність та прийнятність для висунутих вимог я не перевіряв.

Єдиний досвід був із озвучуванням дитячих ігор — просто кидав шматки тексту до рушія і перехоплював через Audacity, де обробляв і нарізав. Втім, це теж не зовсім те.
Denounce the demagogues
King diamonds to discard
Deploy the dialogue
Your word against the law

Відсутній gen

  • Новачок
  • *
  • дописів: 4
  • Карма: +2/-0
Дуже доречна замітка від адміна про piper-tts: https://linux.org.ua/index.php?topic=12013.msg204752;topicseen#new

Я сьогодні натрапив на іншу високоякісну TTS систему з підтримкою української: https://github.com/MycroftAI/mimic3

pip3 install mycroft-mimic3-tts[all]
echo "добрий вечір" | mimic3 --voice uk | ffplay -autoexit -

автоматично скачує потрібні моделі, стабільно працює, краще за https://github.com/mozilla/TTS та https://github.com/coqui-ai/TTS

єдине, я нашвидкоруч поправив код, що валився з дивною помилкою, явно не так, як "треба":

 $ diff -Nurd /home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py{.orig,}
--- /home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py.orig     2023-10-06 00:41:13.121708584 +0100
+++ /home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py  2023-10-05 23:51:46.733840057 +0100
@@ -433,6 +433,7 @@

     def _create_inference_session(self, providers, provider_options, disabled_optimizers=None):
         available_providers = C.get_available_providers()
+        available_providers = ["CPUExecutionProvider"]

         # Tensorrt can fall back to CUDA. All others fall back to CPU.
         if "TensorrtExecutionProvider" in available_providers:



Traceback (most recent call last):
  File "/home/tts/.local/bin/mimic3", line 33, in <module>
    sys.exit(load_entry_point('mycroft-mimic3-tts==0.2.4', 'console_scripts', 'mimic3')())
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/__main__.py", line 129, in main
    process_lines(state)
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/__main__.py", line 450, in process_lines
    process_line(line, state, line_id=line_id, line_voice=line_voice)
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/__main__.py", line 379, in process_line
    state.tts.speak_text(line)
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/tts.py", line 368, in speak_text
    voice = self._get_or_load_voice(self.voice)
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/tts.py", line 595, in _get_or_load_voice
    voice = Mimic3Voice.load_from_directory(
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/voice.py", line 283, in load_from_directory
    onnx_model = Mimic3Voice._load_model(
  File "/home/tts/.local/lib/python3.10/site-packages/mimic3_tts/voice.py", line 403, in _load_model
    onnx_model = onnxruntime.InferenceSession(
  File "/home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 432, in __init__
    raise e
  File "/home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 419, in __init__
    self._create_inference_session(providers, provider_options, disabled_optimizers)
  File "/home/tts/.local/lib/python3.10/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 451, in _create_inference_session
    raise ValueError(
ValueError: This ORT build has ['AzureExecutionProvider', 'CPUExecutionProvider'] enabled. Since ORT 1.9, you are required to explicitly set the providers parameter when instantiating InferenceSession. For example
, onnxruntime.InferenceSession(..., providers=['AzureExecutionProvider', 'CPUExecutionProvider'], ...)