Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

مشکل در ایجاد کد پایتون تی تی اس TTS #36

Open
sina-1384hatefesabegh opened this issue Mar 3, 2024 · 20 comments

Comments

@sina-1384hatefesabegh
Copy link

ببینید من یک مدل 300 مگابایتی دارم که اصلا به درد نمیخوره اصلا متن فارسی رو پردازش نمیکنه فقط اعداد فارسی رو میخونه , و متن انگلیسی رو هم انگار که داره خفه میشه
کاری ندارم

یک مدل 1 گیگابایتی دارم که اونم اصلا همش ارور میده در خروجی
from TTS.config import load_config
from TTS.utils.manage import ModelManager
from TTS.utils.synthesizer import Synthesizer
basepath="C:\Users\computer\Desktop\Persian_TTS_models\1_73_GB"
config=basepath+"\config.json"
model=basepath+"\model"
model_path =model # Absolute path to the model checkpoint.pth
config_path =config # Absolute path to the model config.json
text=".زندگی فقط یک بار است؛ از آن به خوبی استفاده کن"
synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts(text)
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\output.wav')

علت اینکه در متغییر مدل من فقط نوشم مدل اینه که یک پوشه ای به نام مدل هست که خودش model.pth رو در اون پیدا میکنه
و همش میگه یک زبان انتخاب کن و زبان رو که وارد میکنم باز یک ارور دیگه میده که نباید زبان وارد کنی
خروجی:

Text splitted to sentences.
['.زندگی فقط یک بار است؛ از آن به خوبی استفاده کن']
Traceback (most recent call last):
File "C:\Users\computer\Desktop\Persian_TTS_models\TTS\vid1.py", line 72, in
wavs = synthesizer.tts(text)
File "C:\Program Files\Python310\lib\TTS\utils\synthesizer.py", line 378, in tts
outputs = self.tts_model.synthesize(
File "C:\Program Files\Python310\lib\TTS\tts\models\xtts.py", line 392, in synthesize
return self.inference_with_config(text, config, ref_audio_path=speaker_wav, language=language, **kwargs)
File "C:\Program Files\Python310\lib\TTS\tts\models\xtts.py", line 399, in inference_with_config
"zh-cn" if language == "zh" else language in self.config.languages
AssertionError: ❗ Language is not supported. Supported languages are ['en', 'es', 'fr', 'de', 'it', 'pt', 'pl', 'tr', 'ru', 'nl', 'cs', 'ar', 'zh-cn', 'hu', 'ko', 'ja', 'hi']

@karim23657
Copy link
Owner

karim23657 commented Mar 3, 2024

سلام @sina-1384hatefesabegh

  • لطفاً config.json رو همینجا بفرست تا بررسی کنم
  • اگه مدل ها رو هم بفرستی که بتونم امتحان کنم خیلی خوب میشه

@sina-1384hatefesabegh
Copy link
Author

سلام بله حتما اما مشکلم رفع شد
این مدل بدی اش اینه که متن رو باید به انگلیسی وارد کنی اما به صورت فارسی
یعنی بجای این ورودی :
"سلام امید وارم خوب باشید"
با ید اینطور وارد کنی :
"salam omidvaram khoob bashid"
اصلا ارزش نداره به نظرم !!!
من کلا سه تا مدل دارم یکی 1GB
یکی دیگه 900MB
و آخری 370MB
هست که یک گیگه اصلا کار نمیکنه و همش ارور میده
اما اون دوتای دیگه هم که بد کار میکنن:

حالا من اینترنت زیاد ندارم لینک دانلود رو برات میفرستم
صدای زن:
https://aimodels.org/ai-models/text-to-speech-synthesis/persian-female-tts-model-glow-tts-encoding-trained-on-custom-dataset-at-24000hz/

صدای مرد :
https://huggingface.co/Kamtera/persian-tts-male1-vits/resolve/main/checkpoint_88000

و این مدل ها رو با فایل جیسون دانلود کن و بذار در یک دایرکتوری
و کد زیر رو بنویس:
from TTS.utils.synthesizer import Synthesizer
def TTS_mard(matn) :
model_path = "C:\Users\آدرس دایرکتوری آزاد\checkpoint_88000.pth" #### مرد
config_path = "C:\Users\آدرس دایرکتوری آزاد\config.json"
synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts(matn, language_name = "fa")
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\مرد.wav')
def TTS_zan(matn) :
model_path = "C:\Users\آدرس دایرکتوری آزاد\model_file.pth" #### زن
config_path = "C:\Users\آدرس دایرکتوری آزاد\config.json"
synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts(matn, language_name = "fa")
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\زن.wav')
text = str(input("لطفا متن خود را وارد کنید : "))
TTS_mard(text)
TTS_zan(text)

@karim23657
Copy link
Owner

karim23657 commented Mar 27, 2024


@sina-1384hatefesabegh ، مدل ها مشکلی نداره
کنسول یا cmd شما از متن یونیکد پشتیبانی نمیکنه
باید متن رو unicode escape کنی بعد در فانکشن tts قرار بدی
یا کد زیر

text = ".زندگی فقط یک بار است؛ از آن به خوبی استفاده کن"
text = text.encode('unicode-escape').decode("utf-8") 

@sina-1384hatefesabegh
Copy link
Author

ارور میده:
text = ".زندگی فقط یک بار است؛ از آن به خوبی استفاده کن"
text = text.encode('unicode-escape').decode("utf-8")
model_path = "C:\Users\computer\Desktop\Persian_TTS_models\951 MB\checkpoint_88000.pth" #### مرد
config_path = "C:\Users\computer\Desktop\Persian_TTS_models\951 MB\config.json"
synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts(text, language_name="fa")
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\مرد.wav')

در ضمن من از سایت :
https://www.kaggle.com/datasets/magnoliasis/persian-tts-dataset-male
یک فایل زیپ با حجم 4.7 گیگابایت
به اسم persian-tts-dataset-male دانلود کردم
و فایل فشرده شده رو اکسترکت کردم و درونش چیز های زیر بود:
یک پوشه به نام subs:
که درونش 16000 فایل با فرمت .vtt هست
و یک پوشه دیگه کنار پوشه قبلی به نام wavs :
که درونش 16001 فایل با فرمت .wav که به نظر میاد داده های صوتی اند
و کنار دو پوشه قبلی یک فایل 3.5 مگابایتی به نام metadata.csv هست
من با این ها چطور میتونم در پایتون تبدیل متن به گفتار فارسی بسازم؟کلا data set های فارسی هستن اینم راهنماییم کنید ممنون میشم

@sina-1384hatefesabegh
Copy link
Author

ارور رو رفع کردم اما فایل صوتی خروجی خیلی بد و در هم برهم بود انگار صداش میلرزه

text = ".زندگی فقط یک بار است؛ از آن به خوبی استفاده کن"
text = text.encode('unicode-escape').decode("utf-8")
model_path = "C:\Users\computer\...\Persian_TTS_models\951 MB\checkpoint_88000.pth" #### مرد
config_path = "C:\Users\computer\...\

Uploading Untitled Project.mp4…

951 MB\config.json"
synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts(text, language_name="fa")
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\مرد.wav')

@sina-1384hatefesabegh
Copy link
Author

Uploading Untitled Project.mp4…

@sina-1384hatefesabegh
Copy link
Author

کلا چیز های بیربطی میگه
مثل:
ادددتدادااداداایادیااادا

@karim23657
Copy link
Owner

@sina-1384hatefesabegh ,
هیچکدوم از فایل های صوتیت بارگذاری نشده

Uploading Untitled Project.mp4…

شاید espeak رو توی کامپیوترت نصب نکردی،
ببین همین کد رو داره توی https://huggingface.co/spaces/Kamtera/Persian-tts-CoquiTTS اجرا میشه و خروجی صداش هم با کیفیته
توی کولب هم میتونی امتحانش کنی:
test-vits-models.ipynb Open In Colab

پیشنهاد میکنم یه issue هم توی https://github.com/coqui-ai/TTS بزنی

برای آموزش دادن مدل جدید
نمونه کد ها و نوت بوک ها در پوشه recepies موجود هستند
پیشنهاد میکنم این مخزن رو هم ببینی:
https://github.com/karim23657/awesome-Persian-Speech

@sina-1384hatefesabegh
Copy link
Author

الان یعنی اگه من در سیستمم espeak رو نصب کنم میتونه مثل https://huggingface.co/spaces/Kamtera/Persian-tts-CoquiTTS قشنگ بخونه و در ضمن مدلش با من فرق داره

@sina-1384hatefesabegh
Copy link
Author

sina-1384hatefesabegh commented Mar 31, 2024

مورد بعد اینکه من چطور مدل vits male(best رو دانلود کنم؟)
چون من یک دیتا ست 5 گیگ از صدای مرد دارم [https://www.kaggle.com/datasets/magnoliasis/persian-tts-dataset-male](https://www.kaggle.com/datasets/magnoliasis/%5Bpersian-tts-dataset-male%5D(https://www.kaggle.com/datasets/magnoliasis/persian-tts-dataset-male))

@sina-1384hatefesabegh
Copy link
Author

داداش من میتونم اصلا تلگرام یا دیگر فضا های مجازی تو رو داشته باشم تا در اونجا ازت راهنمایی بگیرم خیلی ممنون میشم

@sina-1384hatefesabegh
Copy link
Author

sina-1384hatefesabegh commented Mar 31, 2024

من یک espeak نصب کردم در سیستمم یک نرم افزار هست با آیکون لبخند اسمش هست APPTTS از این لینک :
https://sourceforge.net/projects/espeak/postdownload
اما کار نمیکنه پس از این لینک دانلود کردم:
https://download.cnet.com/espeak/3000-33660_4-75886780.html
که این کار میکنه اما مدل صدای فارسی اش خیلی ربات وار هست یعنی فارسی رو مثل ربات صحبت میکنه

@sina-1384hatefesabegh
Copy link
Author

sina-1384hatefesabegh commented Mar 31, 2024

خب من طبق این لینک شما :https://github.com/karim23657/Persian-tts-coqui/blob/main/recepies/vits/test-vits-models.ipynb
تست کردم با کد زیر:
from TTS.utils.synthesizer import Synthesizer

model_path = "C:\Users\computer\Desktop\.......model path .......\best_model_female.pth"
config_path = "C:\Users\computer\Desktop\.......config path .......\config.json"

synthesizer = Synthesizer(model_path, config_path)
wavs = synthesizer.tts("سلام دنیا", language_name="fa")
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\زن.wav')

اما مشکل روال عادی متن فارسی رو نمیخونه یک فایل صدای خالی میده اما متن انگلیسی رو میخونه

حالا با کد زیر :

from TTS.config import load_config
from TTS.utils.manage import ModelManager
from TTS.utils.synthesizer import Synthesizer
import IPython

model_path = "C:\Users\computer\Desktop.......model path .......\best_model_female.pth"
config_path = "C:\Users\computer\Desktop.......config path .......\config.json"

synthesizer = Synthesizer(
model_path,
config_path,

)

text= "\u062F\u0631 \u0631\u0648\u0627\u06CC\u062A \u0628\u062E\u0648\u0631 \u062D\u0636\u0631\u062A \u0645\u0631\u06CC\u0645 (\u0639) \u0622\u0645\u062F\u0647" #@param {type:"string"}

wavs = synthesizer.tts(text)
synthesizer.save_wav(wavs, 'C:\Users\computer\Desktop\زن.wav')
IPython.display.Audio('C:\Users\computer\Desktop\زن2.wav')

طبق این کد بالا ارور زیر رو میده:

Processing time: 0.496671199798584
Real-time factor: 0.7496987921384705
Traceback (most recent call last):
File "C:\Users\computer\Desktop\فایل های کاری\پروژه های شخصی\مباحث مشکلات\Persian_TTS_models\test.py", line 24, in
IPython.display.Audio('C:\Users\computer\Desktop\زن2.wav')
File "C:\Users\computer\PycharmProjects\pythonProject1\venv\lib\site-packages\IPython\lib\display.py", line 129, in init
raise ValueError("rate must be specified when data is a numpy array or list of audio samples.")
ValueError: rate must be specified when data is a numpy array or list of audio samples.

@sina-1384hatefesabegh
Copy link
Author

ممنون میشم کمکم کنید خیلی برام مهمه که درست بشه

@karim23657
Copy link
Owner

karim23657 commented Mar 31, 2024

داداش من میتونم اصلا تلگرام یا دیگر فضا های مجازی تو رو داشته باشم تا در اونجا ازت راهنمایی بگیرم خیلی ممنون میشم

ایمیل بزنید تا بهتون بگم [email protected]

@sina-1384hatefesabegh
Copy link
Author

بله در ایمیل بهتون پیام فرستادم

@karim23657
Copy link
Owner

ادامه این مشکل را در اینجا پیگیری کنید: coqui-ai/TTS#3667

@sina-1384hatefesabegh
Copy link
Author

sina-1384hatefesabegh commented May 2, 2024 via email

@FaryarKankash
Copy link

منم این مشکل رو دارم ، کلا یا یه فایل صوتی خالی تولید میکنه یا اصلا حرف های الکی تولید میکنه. espeak-ng هم نصب کردم و کاملا درست توی ترمینال با کامند espeak-ng باهاش کار میکنم.

@sina-1384hatefesabegh
Copy link
Author

sina-1384hatefesabegh commented Aug 5, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants