Persian-tts-coqui
Persian-tts-coqui copied to clipboard
مشکل در ایجاد کد پایتون تی تی اس TTS
ببینید من یک مدل 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']
سلام @sina-1384hatefesabegh
- لطفاً config.json رو همینجا بفرست تا بررسی کنم
- اگه مدل ها رو هم بفرستی که بتونم امتحان کنم خیلی خوب میشه
سلام بله حتما اما مشکلم رفع شد این مدل بدی اش اینه که متن رو باید به انگلیسی وارد کنی اما به صورت فارسی یعنی بجای این ورودی : "سلام امید وارم خوب باشید" با ید اینطور وارد کنی : "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)
@sina-1384hatefesabegh ، مدل ها مشکلی نداره کنسول یا cmd شما از متن یونیکد پشتیبانی نمیکنه باید متن رو unicode escape کنی بعد در فانکشن tts قرار بدی یا کد زیر
text = ".زندگی فقط یک بار است؛ از آن به خوبی استفاده کن"
text = text.encode('unicode-escape').decode("utf-8")
ارور میده: 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 های فارسی هستن اینم راهنماییم کنید ممنون میشم
ارور رو رفع کردم اما فایل صوتی خروجی خیلی بد و در هم برهم بود انگار صداش میلرزه
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')
Uploading Untitled Project.mp4…
کلا چیز های بیربطی میگه مثل: ادددتدادااداداایادیااادا
@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
الان یعنی اگه من در سیستمم espeak رو نصب کنم میتونه مثل https://huggingface.co/spaces/Kamtera/Persian-tts-CoquiTTS قشنگ بخونه و در ضمن مدلش با من فرق داره
مورد بعد اینکه من چطور مدل 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))
داداش من میتونم اصلا تلگرام یا دیگر فضا های مجازی تو رو داشته باشم تا در اونجا ازت راهنمایی بگیرم خیلی ممنون میشم
من یک espeak نصب کردم در سیستمم یک نرم افزار هست با آیکون لبخند اسمش هست APPTTS از این لینک : https://sourceforge.net/projects/espeak/postdownload اما کار نمیکنه پس از این لینک دانلود کردم: https://download.cnet.com/espeak/3000-33660_4-75886780.html که این کار میکنه اما مدل صدای فارسی اش خیلی ربات وار هست یعنی فارسی رو مثل ربات صحبت میکنه
خب من طبق این لینک شما :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.
ممنون میشم کمکم کنید خیلی برام مهمه که درست بشه
داداش من میتونم اصلا تلگرام یا دیگر فضا های مجازی تو رو داشته باشم تا در اونجا ازت راهنمایی بگیرم خیلی ممنون میشم
ایمیل بزنید تا بهتون بگم [email protected]
بله در ایمیل بهتون پیام فرستادم
ادامه این مشکل را در اینجا پیگیری کنید: https://github.com/coqui-ai/TTS/discussions/3667
خیلی ممنونم اما کسی جوابی نفرستاده هنوز اما بازهم خیلی ممنون که پیگیری کردید
karim23657 @.***> در تاریخ پنجشنبه ۱۱ آوریل ۲۰۲۴ ساعت ۱۰:۳۹ نوشت:
ادامه این مشکل را در اینجا پیگیری کنید: coqui-ai/TTS#3667 https://github.com/coqui-ai/TTS/discussions/3667
— Reply to this email directly, view it on GitHub https://github.com/karim23657/Persian-tts-coqui/issues/36#issuecomment-2049056460, or unsubscribe https://github.com/notifications/unsubscribe-auth/BDMBELE3H7ZQHBY3BYBP4DDY4YZJJAVCNFSM6AAAAABEDXIOB2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBZGA2TMNBWGA . You are receiving this because you were mentioned.Message ID: @.***>
منم این مشکل رو دارم ، کلا یا یه فایل صوتی خالی تولید میکنه یا اصلا حرف های الکی تولید میکنه. espeak-ng هم نصب کردم و کاملا درست توی ترمینال با کامند espeak-ng باهاش کار میکنم.
سلام خب منم اونو نصب دارم اما چطور با ترمینال اسپیک ان جی با اون مدل کار میکنی؟
Faryar Kankash @.***> در تاریخ یکشنبه ۲۱ ژوئیه ۲۰۲۴ ساعت ۱۶:۲۸ نوشت:
منم این مشکل رو دارم ، کلا یا یه فایل صوتی خالی تولید میکنه یا اصلا حرف های الکی تولید میکنه. espeak-ng هم نصب کردم و کاملا درست توی ترمینال با کامند espeak-ng باهاش کار میکنم.
— Reply to this email directly, view it on GitHub https://github.com/karim23657/Persian-tts-coqui/issues/36#issuecomment-2241602287, or unsubscribe https://github.com/notifications/unsubscribe-auth/BDMBELBEDCENC4GTUVNRB6LZNOWAFAVCNFSM6AAAAABEDXIOB2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBRGYYDEMRYG4 . You are receiving this because you were mentioned.Message ID: @.***>