nem működik valamiért ha kicserélem a gladioban a modellt a tiédre.

#1
by medmex420 - opened

RuntimeError: Error(s) in loading state_dict for CFM:
size mismatch for transformer.text_embed.text_embed.weight: copying a param with shape torch.Size([2548, 512]) from checkpoint, the shape in current model is torch.Size([2546, 512]).

Ez azért van, mert a vocab.txt nagyobb lett mint az eredeti. (Az ű karakter hiányzott belőle) Az ebben a repoban lévő vocab.txt-t tedd a /F5-TTS/src/f5_tts/infer/examples/vocab.txt helyére.

Az infer_gradio filet pedig módosítani kell, az alábbi részt:

# load models
F5TTS_model_cfg = dict(dim=1024, depth=22, heads=16, ff_mult=2, text_dim=512, conv_layers=4)
F5TTS_ema_model = load_model(
    DiT, F5TTS_model_cfg, str(cached_path("hf://sarpba/F5-TTS-Hun/hun_v4/model_524580.pt"))
)

#E2TTS_model_cfg = dict(dim=1024, depth=24, heads=16, ff_mult=4)
#E2TTS_ema_model = load_model(
#    UNetT, E2TTS_model_cfg, str(cached_path("hf://sarpba/F5-TTS-Hun/hun_v4/model_524580_hun.safetensors"))    <--- Ezt a sort hagyhatod az eredeti E2 modelen, csak próbálgattam, hátha nem kell kikommentelni.
#)

Az E2 modellt ki kell kommentelni, mert ugyanazt a vocabot akarja használálni. Az meg a magyaritott vocabtol fexik meg.

értelem szerűen ez csak akkor működik, ha a szerkeszthető metódussal telepíted, nem sima pip csomagként az f5-tts-t.

u.i.: Az 5 gigás filet használd a kvantálás nagyon sokat rontott a kisebb minőségén.

Esetleg néz rá a szinkron készítő appomra, amit a modellhez készítettem. https://github.com/sarpba/AI_sync Ez simán megy vele. :)

Nagyszerű! Működik, köszönöm szépen!
Megnéztem, jól hangzik. Mindenképpen ki fogom próbálni, már én is elgondolkodtam hasonlón. Csak én egy lelkes amatőr vagyok...:D
Egyébként ha szabad még egy kérdést.
Hogyan tudom a finetune-gradio-ban sikeresen elindítani a traininget ? egyszerűen sehogy se sikerül van hanganyag fel van szeletelve 5-15 mp hosszúra, megvan a csv, vocab check megvan , a prepare data is lefut elkészül a raw.arrow a de a training nem indul el ... :(

mi a hiba amit a terminálba kidob?

accelerate launch --mixed_precision=fp16 src/f5_tts/train/finetune_cli.py --exp_name F5TTS_Base --learning_rate 1e-05 --batch_size_per_gpu 9600 --batch_size_type frame --max_samples 16 --grad_accumulation_steps 1 --max_grad_norm 1 --epochs 286802 --num_warmup_updates 4 --save_per_updates 6 --last_per_steps 2 --dataset_name proba --finetune True --tokenizer pinyin --log_samples True --logger tensorboard

vocab : 2547
Using logger: tensorboard
Loading dataset ...
Download Vocos from huggingface charactr/vocos-mel-24khz
C:\Users\attig\anaconda3\envs\viktor\lib\site-packages\vocos\pretrained.py:70: FutureWarning: You are using torch.load with weights_only=False (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for weights_only will be flipped to True. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via torch.serialization.add_safe_globals. We recommend you start setting weights_only=True for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
state_dict = torch.load(model_path, map_location="cpu")

Sorting with sampler... if slow, check whether dataset is provided with duration: 0%| | 0/62 [00:00<?, ?it/s]
Sorting with sampler... if slow, check whether dataset is provided with duration: 100%|##########| 62/62 [00:00<?, ?it/s]

Creating dynamic batches with 9600 audio frames per gpu: 0%| | 0/62 [00:00<?, ?it/s]
Creating dynamic batches with 9600 audio frames per gpu: 100%|##########| 62/62 [00:00<?, ?it/s]
Traceback (most recent call last):
File "C:\viktor\F5-TTS\src\f5_tts\train\finetune_cli.py", line 167, in
main()
File "C:\viktor\F5-TTS\src\f5_tts\train\finetune_cli.py", line 160, in main
trainer.train(
File "C:\viktor\F5-TTS\src\f5_tts\model\trainer.py", line 257, in train
start_step = self.load_checkpoint()
File "C:\viktor\F5-TTS\src\f5_tts\model\trainer.py", line 172, in load_checkpoint
self.ema_model.load_state_dict(checkpoint["ema_model_state_dict"])
File "C:\Users\attig\anaconda3\envs\viktor\lib\site-packages\torch\nn\modules\module.py", line 2584, in load_state_dict
raise RuntimeError(
RuntimeError: Error(s) in loading state_dict for EMA:
size mismatch for ema_model.transformer.text_embed.text_embed.weight: copying a param with shape torch.Size([2546, 512]) from checkpoint, the shape in current model is torch.Size([2548, 512]).
Traceback (most recent call last):
File "C:\Users\attig\anaconda3\envs\viktor\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\attig\anaconda3\envs\viktor\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\attig\anaconda3\envs\viktor\Scripts\accelerate.exe_main
.py", line 7, in
File "C:\Users\attig\anaconda3\envs\viktor\lib\site-packages\accelerate\commands\accelerate_cli.py", line 48, in main
args.func(args)
File "C:\Users\attig\anaconda3\envs\viktor\lib\site-packages\accelerate\commands\launch.py", line 1168, in launch_command
simple_launcher(args)
File "C:\Users\attig\anaconda3\envs\viktor\lib\site-packages\accelerate\commands\launch.py", line 763, in simple_launcher
raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['C:\Users\attig\anaconda3\envs\viktor\python.exe', 'src/f5_tts/train/finetune_cli.py', '--exp_name', 'F5TTS_Base', '--learning_rate', '1e-05', '--batch_size_per_gpu', '9600', '--batch_size_type', 'frame', '--max_samples', '16', '--grad_accumulation_steps', '1', '--max_grad_norm', '1', '--epochs', '286802', '--num_warmup_updates', '4', '--save_per_updates', '6', '--last_per_steps', '2', '--dataset_name', 'proba', '--finetune', 'True', '--tokenizer', 'pinyin', '--log_samples', 'True', '--logger', 'tensorboard']' returned non-zero exit status 1.

Nagyon kevés ez az adat amivel tanítani próbálod. Hány óra? Az én finomhangolásaim közül a v1-27 óra, v2-1240 óra, v3-1080, óra v4-300 óra. Az első sikeres kisérleteim elött nekem is elszállt mikor nagyon kevés adatot kapott. Esélyes, hogy nálad is eza gond.

ahh értem :D Az lehet... Kb. fél órát akartam rágyógyítani., de akkor gyűjtök még hozzá. :D Mit gondolsz, mennyivel lehet vagy érdemes próbálkozni ?

Az eredeti modellt egy 100.000,- órás adatbázison képezték. Finomhangoláshoz, minimum 10 óra kell (MP3Pinty-onek sikerült ennyivel is, itt van: https://huggingface.co/mp3pintyo/F5-TTS-Hun), de akkor az nagyon jó minőségű kell legyen tökéletes átiratokkal, de a minősége nem lesz tökéletes ugy sem. Ha azt akarod hogy jó legyen minimum 2-300 óra kell. A legutóbbi v4 bekem 300 óra hanganyaggal készült 3200-as bach mérettel, 2 3090 GPU-n (nvlinkkel) cca 2 napig tartott. Valójában az 500.000-es v4 1 GPU-n 1.000.000,- Feletti lépésszámot jelent. Hozzáteszem, ha végre lesz egy teljesen jó modell (még a v4-sem az), akkor onnantól majdnem felesleges többet képezni.

Nem kis számok. Köszönöm a segítséget és a felvilágosítást! Na meg nem utolsó sorban az elkészült modellekért is jár a köszönet!

Nálam a v4-es modellel nem stimmel valami. A v3-as teljesen jó. TTS-Webui alatt használom generálásra (ott extension-ként lehet feltenni, de a cserélendő kód ugyanaz), és ezt a hibát kapom a v4 legutolsó modelljére. Vagy a negyedik verziónál már kell a kommentelés?

model : C:\Users\Mykee.cache\huggingface\hub\models--sarpba--F5-TTS-Hun\snapshots\4444302f512e66a66bdedb3e73f7bf0c14efb7c5\hun_v4\model_524580.pt

Traceback (most recent call last):
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\queueing.py", line 622, in process_events
response = await route_utils.call_process_api(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\route_utils.py", line 323, in call_process_api
output = await app.get_blocks().process_api(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\blocks.py", line 2014, in process_api
result = await self.call_function(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\blocks.py", line 1567, in call_function
prediction = await anyio.to_thread.run_sync( # type: ignore
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio_backends_asyncio.py", line 2177, in run_sync_in_worker_thread
return await future
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio_backends_asyncio.py", line 859, in run
result = context.run(func, *args)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\utils.py", line 846, in wrapper
response = f(*args, **kwargs)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\extension_f5_tts\gradio_app.py", line 94, in infer
ema_model = get_F5TTS_model()
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\extension_f5_tts\gradio_app.py", line 75, in get_F5TTS_model
F5TTS_ema_model = load_model(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\f5_tts\model\utils_infer.py", line 135, in load_model
model = load_checkpoint(model, ckpt_path, device, use_ema=use_ema)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\f5_tts\model\utils.py", line 616, in load_checkpoint
model.load_state_dict(checkpoint["model_state_dict"])
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\torch\nn\modules\module.py", line 2189, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for CFM:
Missing key(s) in state_dict: "mel_spec.mel_stft.spectrogram.window", "mel_spec.mel_stft.mel_scale.fb".
size mismatch for transformer.text_embed.text_embed.weight: copying a param with shape torch.Size([2548, 512]) from checkpoint, the shape in current model is torch.Size([2546, 512]).

Ezt a hibát akkor dobálja ( torch.Size([2546, 512]).) ha a vocab mérete nem egyezik a modell méretével. Valamiért az eredeti vocabot szedi össze, ha nem cserélted ki ammor mondjuk egyértelmű miért :)

Délután írok egy modosított infer-cli-t, illetve akár gradiót is, ahhol manuálisan meg kell adni a vocab filet is.

A 3-as modell azért működik, mert azt az eredeti vocabbal tréningeztem hosszú ű betü nélkül, azaz annak nem kell az új vocab file.

Így már tiszta, és érthető, csak azon agyalok, hogyan tudnám univerzálisabban megoldani, hogy a TTS-Webui frissítésébe ne kavarjon be. Azaz felületről is megoldható legyen. Köszönöm, cserélem is a fájlt!

A vocab.txt csere a shape hibát megoldotta, de sajnos ezt a részét nem:

Traceback (most recent call last):
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\queueing.py", line 622, in process_events
response = await route_utils.call_process_api(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\route_utils.py", line 323, in call_process_api
output = await app.get_blocks().process_api(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\blocks.py", line 2014, in process_api
result = await self.call_function(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\blocks.py", line 1567, in call_function
prediction = await anyio.to_thread.run_sync( # type: ignore
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio\to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio_backends_asyncio.py", line 2177, in run_sync_in_worker_thread
return await future
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\anyio_backends_asyncio.py", line 859, in run
result = context.run(func, *args)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\gradio\utils.py", line 846, in wrapper
response = f(*args, **kwargs)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\extension_f5_tts\gradio_app.py", line 94, in infer
ema_model = get_F5TTS_model()
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\extension_f5_tts\gradio_app.py", line 75, in get_F5TTS_model
F5TTS_ema_model = load_model(
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\f5_tts\model\utils_infer.py", line 135, in load_model
model = load_checkpoint(model, ckpt_path, device, use_ema=use_ema)
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\f5_tts\model\utils.py", line 616, in load_checkpoint
model.load_state_dict(checkpoint["model_state_dict"])
File "I:\tts-generation-webui\tts-generation-webui-main\installer_files\env\lib\site-packages\torch\nn\modules\module.py", line 2189, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for CFM:
Missing key(s) in state_dict: "mel_spec.mel_stft.spectrogram.window", "mel_spec.mel_stft.mel_scale.fb".

Milyen konfig, milyen oprendszer, mikor telepítetted az F5-TTS-t (friss verzió-e)? Nem utolsó sorban, hogy szeretnéd használni? infer-cli, vagy infer-gradio, vagy api?

A konfig egy i9-13900K, RTX 3090-es, 64 GB RAM, Windows 10. Az F5-TTS elvileg friss, mert a TTS-Webuiban az extension újnak tűnik, itt a linkje:
https://github.com/rsxdalv/extension_f5_tts
A Webuié:
https://github.com/rsxdalv/tts-generation-webui

A TTS-Webui gradio alapú, abban próbáltam, ahogy néztem, a gyári gradio lett implementálva, és a két sor pöccre megegyezik a fenti mintában lévővel. Tehát kicseréltem az útvonalat, letöltöttem a vocabot, és lecseréltem. Azért nem értem csupán, mert tényleg a v3 hibátlanul hozta, a v4-nél jött elő ez a hiba.

Múlt héten változott picit az F5-TTS kódja, szóval a plugin régi sajnos, miért nem az origi repo-t használod? https://github.com/SWivid/F5-TTS (az editable változatot, ne azt ahhol pip-el csomaggént van kezelve) telepítés után f5_tts_infer-gradio-val indítod, és megy is (magyarul persze a módosítások után)

Köszönöm szépen, akkor jelzem ezt az extension készítőjének is. A TTS-Webui-t azért szeretem, mert minden ilyen hangi generátor egy helyről elérhető és így kevesebb helyet is foglal. A modelled szuper, és nagyon köszönök minden segítséget!

Sign up or log in to comment