From 78b753133a79bcacff2e355f1b7edf8ab6143ffd Mon Sep 17 00:00:00 2001 From: Arunkumar V Date: Tue, 9 Dec 2025 03:35:55 +0530 Subject: [PATCH] cli changes --- Dockerfile.mac | 37 + configs/config.py | 3 +- datasets/README.md | 36 + docker-compose.mac.yml | 18 + experiments/output_test.wav | Bin 0 -> 179244 bytes experiments/voice1_to_voice2.wav | Bin 0 -> 217644 bytes infer-web.py | 28 +- infer-web.pyi | 1625 ++++++++++++++++++ infer/lib/train/utils.py | 10 +- infer/modules/train/extract_feature_print.py | 9 + infer/modules/train/train.py | 94 +- infer/modules/vc/utils.py | 10 + inference_log.txt | 24 + run_inference.py | 81 + run_inference_api.py | 46 + setup-doc.md | 67 + temp_download_dialects.py | 33 + temp_download_genshin.py | 38 + temp_download_hifi.py | 46 + temp_download_libritts.py | 45 + tools/audio_preprocessor.py | 81 + tools/download_datasets.py | 246 +++ tools/run_experiments_batch.py | 93 + tools/test_grid.py | 131 ++ tools/train_batch.py | 194 +++ 25 files changed, 2956 insertions(+), 39 deletions(-) create mode 100644 Dockerfile.mac create mode 100644 datasets/README.md create mode 100644 docker-compose.mac.yml create mode 100644 experiments/output_test.wav create mode 100644 experiments/voice1_to_voice2.wav create mode 100644 infer-web.pyi create mode 100644 inference_log.txt create mode 100644 run_inference.py create mode 100644 run_inference_api.py create mode 100644 setup-doc.md create mode 100644 temp_download_dialects.py create mode 100644 temp_download_genshin.py create mode 100644 temp_download_hifi.py create mode 100644 temp_download_libritts.py create mode 100644 tools/audio_preprocessor.py create mode 100644 tools/download_datasets.py create mode 100644 tools/run_experiments_batch.py create mode 100644 tools/test_grid.py create mode 100644 tools/train_batch.py diff --git a/Dockerfile.mac b/Dockerfile.mac new file mode 100644 index 000000000..596ae5679 --- /dev/null +++ b/Dockerfile.mac @@ -0,0 +1,37 @@ +FROM python:3.10-slim + +EXPOSE 7865 + +WORKDIR /app + +RUN apt-get update && \ + apt-get install -y -qq ffmpeg aria2 git build-essential && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +COPY requirements.txt . + +RUN pip install --upgrade "pip<24.1" && \ + pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu && \ + pip install --no-cache-dir -r requirements.txt && \ + pip install fairseq==0.12.2 && \ + pip install gradio==3.34.0 gradio-client==0.2.7 + +COPY . . + + +RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/D40k.pth -d assets/pretrained_v2/ -o D40k.pth && \ + aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/G40k.pth -d assets/pretrained_v2/ -o G40k.pth && \ + aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/f0D40k.pth -d assets/pretrained_v2/ -o f0D40k.pth && \ + aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/pretrained_v2/f0G40k.pth -d assets/pretrained_v2/ -o f0G40k.pth + +RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -d assets/hubert -o hubert_base.pt && \ + aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt -d assets/rmvpe -o rmvpe.pt + +RUN aria2c --console-log-level=error -c -x 16 -s 16 -k 1M "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP2-%E4%BA%BA%E5%A3%B0vocals%2B%E9%9D%9E%E4%BA%BA%E5%A3%B0instrumentals.pth" -d assets/uvr5_weights/ -o "HP2-人声vocals+非人声instrumentals.pth" && \ + aria2c --console-log-level=error -c -x 16 -s 16 -k 1M "https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/uvr5_weights/HP5-%E4%B8%BB%E6%97%8B%E5%BE%8B%E4%BA%BA%E5%A3%B0vocals%2B%E5%85%B6%E4%BB%96instrumentals.pth" -d assets/uvr5_weights/ -o "HP5-主旋律人声vocals+其他instrumentals.pth" + +VOLUME [ "/app/weights", "/app/logs", "/app/assets/weights" ] + +CMD ["python", "infer-web.py"] diff --git a/configs/config.py b/configs/config.py index a330fb543..47edad7f5 100644 --- a/configs/config.py +++ b/configs/config.py @@ -167,7 +167,8 @@ def device_config(self) -> tuple: self.preprocess_per = 3.0 elif self.has_mps(): logger.info("No supported Nvidia GPU found") - self.device = self.instead = "mps" + logger.info("MPS available but using CPU for stability") + self.device = self.instead = "cpu" self.is_half = False self.use_fp32_config() else: diff --git a/datasets/README.md b/datasets/README.md new file mode 100644 index 000000000..554aca12f --- /dev/null +++ b/datasets/README.md @@ -0,0 +1,36 @@ +# Voice Datasets + +This directory contains the audio datasets for training custom RVC models. + +## Structure + +Each subdirectory corresponds to a specific voice type: + +- `male_low/`: Bass/Baritone male voices +- `male_mid/`: Tenor/Mid-range male voices +- `female_low/`: Alto/Contralto female voices +- `female_high/`: Soprano/High-range female voices +- `anime_airy/`: Breath/Airy anime-style voices +- `accent_non_native/`: Voices with distinct non-native accents +- `singing_male/`: Male singing vocals +- `singing_female/`: Female singing vocals +- `child/`: Child voices +- `elderly/`: Elderly voices + +## How to Add Data + +1. **Collect Audio**: Gather 10-15 minutes of clean, single-speaker audio for the desired category. +2. **Place Files**: Put the raw audio files (mp3, wav, etc.) into a temporary folder or directly here. +3. **Process**: Use the provided tool to normalize and split the audio. + +```bash +# Example: Processing a raw file into the male_low dataset +python tools/audio_preprocessor.py -i raw_audio/my_voice.mp3 -o datasets/male_low +``` + +## Requirements + +- **Format**: WAV (will be converted automatically) +- **Sample Rate**: 40kHz or 48kHz (will be converted automatically) +- **Channels**: Mono (will be converted automatically) +- **Quality**: No background noise, music, or reverb. Use UVR5 to clean if necessary. diff --git a/docker-compose.mac.yml b/docker-compose.mac.yml new file mode 100644 index 000000000..94472795d --- /dev/null +++ b/docker-compose.mac.yml @@ -0,0 +1,18 @@ +version: '3.8' + +services: + rvc-webui: + build: + context: . + dockerfile: Dockerfile.mac + ports: + - "7865:7865" + volumes: + - ./weights:/app/weights + - ./logs:/app/logs + - ./assets/weights:/app/assets/weights + - ./datasets:/app/datasets + environment: + - PYTHONUNBUFFERED=1 + restart: unless-stopped + platform: linux/amd64 diff --git a/experiments/output_test.wav b/experiments/output_test.wav new file mode 100644 index 0000000000000000000000000000000000000000..468ab13b60231876732fa65dc049949a56963836 GIT binary patch literal 179244 zcmZsE3D{L*_x>KvIqy97Hc~_)GD~KKA}Um5rpWA*c_;~)=VT`H98tz-E+vIh5os#_ki53q1dE337&8~$2a&8!BrrfAKq=2i=97i(AiwZu~MLThF< zvFdPUEk5;KgXJ2l%Br-=(JHXSFi(77?#dfTh;*4^f8AtCOOIzdkcJN$oVLgT={&R3l0^7Le;M*x|ScovW1mQ<9) zA6pvh*&Ta5T%ApK;2FFUuh08>g)3xmJR7f_jvAwXqpkmK|3n)L?Vo5%v^n}G+OVT- z!ty`Srf7Y%CR$NwtFg2uT8p+OS{`W$1LBm&h5*izoKP3zW<1RL;F4Y1MT-{akMD<6>Wa>OY~DTH=0*yKSr~o znbGuUS~NA95=}?xK2S=h=gQ?ZBJzeVF-E=`OkW7{MweG`2heN|{*?)d&H`V!l| zF6{X-`T|YsJnrjg0?wU;_FbV(+Hs{BxZ@1;VLI+PJDP)j{S^I-UM@gy7Z&=w7*DVq zPpeT|ixK0PbHvOjZzzo5Cd|O*!pv;LESZ+ZymTv}g(+bD(TEYNcnakA$L}*gD7SH5$Tc9;BEb(f@ zfogoWz!iiuLYbzxn$ByAzSR`2)U<#-ypOh26!0Q}CzY;8g)z`57=5D-CU-QB=C*={ zP#ZR3mev&{p0mao<4pZs_*=VUKG)!g4Li*wkD!jQtuDwi^?^t8lbW)ju!rYS4*td( zb%y)cs4dhpo=u(OeK!?)B8l08-fi0<16v>oTHahZ=AVKDNpmS%n;|DUnleMF;qk-~ zVo1Iq1rd-;7)bmidY1ebMGcm6yZ(r3VZ?KYgT$SkaV&!?CvgX1iRs5i^y6RbAvWa; zGR!`2FZ6?QE1c6_N^MZMK2e&O9AS&3mFvV{7kyDH0j5)8X*Y}=pnc%>N=O8yOSVHt zRbhKs;rU7n5>Fe#r!B!ZrIfPQ5_W5MYfr1K)utfTv}2SyHp(TXo|cZXM;WWZr_PjY zQx2g|b2! zSp{@i2ITy+fRw)jH5UVU78H?axMha+&%^38utSE0Y)(p&BJbGD71^D@XY-)>`(R_MUT4 zhPmMU5D(ad7o5Z9nAKehGfbr6Y_e%4g<%btZTc@^i=+bG$O=a`UaW*9w#qD*Od*RzVQw` zhU3OFX(3VtsS+L#@rVr^YoW!z_@&|Cd@n(xK1t@OW0LNo@3I^{ zq=Zwd*hT=8_8$*v;NXK=exGatIM98Q(fF6Q84??Uw!kbgfGGqjfZ4YBg_bkv6$(DVl4U-^21Ct zMWNyunhnl}M%zfcBvj*0T+9|EPmv6@g<3;&quwx5(g<^uxx_!=lCX*6%UR)w%CZ`t z$Q=9cfAv;2OOcKIzI6o+H_;CxpcTLa+FeC0jCi;%lvq~46Ry)X{<%}5on%aabnv!0WclOlCI(31FLXFh6o%eB>{}js+;i=(5P4OB$ z-zw<3?16NQ{xgwW=TehQT&O!0Jx}(Ld!^0%=99AtX*71iBF!$JSu?|9%q(h#xX!UQ ze1xuNj?z9_4@!m^Z;ma!4Qj9A6ZVn)U^D&E9p&?B=GkM7m_Z+o4E=0+;q
O`TU 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

~6r`ZeZ)Uz_sczKY;qZ&^D-p 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

;)0 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≥&T|2)*x09d)NP=c&t3 zIN3a+uy2^b_Xji5Tqb(94*k*&+?TpN2f~fwZRDML@)jewV>DOZ;{KPZ`D3*EY>rf? z2YG`$8d_HRYB-ihUs~)KwPnV}_lI?=nbr0)CESJ;*O@Z7(g$wS`p>~f4Oi!dTh!vn zSZ08g)vWi@j?3v)qo^^_Rz0|5Z~nI6T|4q?5brjcT3kdKH_*D<*w&yidy`S(%f0tu z%M}C%F5-!u3!hp6vwDI4u83WE0f{R>8M|1dP!#JTMuWQ4Sy5dz7N`3mc(_Uok;0<9&jd=if_^`S zp6ts^kNfF?JwewZ%FGNlybNXNjnly7Q^@8W1W$ALl2BZE@siU z1|jDGWbf>uCK`f@f!K_J=#&oB@iy8`*4+C`Br6jJ6OUKwK5TI|>!cA1m538g!NrY%HoU#57Xo`N#>;4kx$Mo&2LCUCX^&nW}qcB73C5I0jJ z(_NAKonVa2$h(;T3X@6k1iieA*)C_(7l-lWan$S)^wKt)+!vX-4(IKHe|;BT#lf(*2egr$yUVJ# z%iw};l(#DQ^;b1nov1EC=2vUBvW&lJrGAM-w}lOV;u$s3|KYUJ2HLL~xwtS^6%VhdJ!S@PWvz(}tVqd1H&w;OEp9qqA1VU8_$qam!y z^aws*9S%Ey`e+SvEe&pEVrg6e^P-U79-LPX^7vpDFtR!n?}q`c-yCiHlq)(>`>AB&_k|_*=4k=&?Coey57rJi zfCVmcH4%Bfh8C_xFN@)913o!-cx*24)S_tKM_}<8uyOAE+EUg?9mAf3 z_|0UtPg#pK4c})h|3xDuO+nm8$bBm~OBmVTb&%C{a7#5UF@loCz{?-u`M@`T@fU+NFWK0q(I9#SJ>QG;jDUnG1w??v^c;jH?VI*%9%M8%{ zIV$=y1l?AW+=$=s_uka!Cs1)RR}{w26^EsjX!ij7MkARSc%_G<32syRQ0i1##T{+F z53S(CIM7w}$;^7s*&gCfg711lqkx{~|U7g>#fb(cdv|G;{7Qlm9#fdD*K_28DH zXo&;pA01ZORNm$>we$q-wvk>@5B+opEGxix%h_1LW$fj#*r$O$33$aK=#A0f=S{X_ zNO2P|BLl>E2*O>4Jtk59aLQBUzjvYB#oI4xA@O0!}{(eOV-a%7c$G7-csc8-E)QtDJ$I8hysj(6Coz`gMSMC(T0sXolA0N?BvtjKrf@(Q&-zT6*X*l+9p0FOg zSWb^X-XvD13hi#Y%?Vf zz{crJyWD{bwWV);A<9z{^z&7xFvsf(WWz))x1q1Up+%lxtrUYxY(V4Yr0o+GVzf@cJzDa|mT@OZ%;$R0+&)ULD+QPYVifmrd3s?L--KAt(3gKdX`T zUbI&izWdRiXQ5&5ATK$q!DccJI21i1E4Y_Y>dgoI(ZMB3z?37no2>CJw)_wNGt1BU#0vv@L0rxcvd`h!L&|U zbs?g}nef{ew9z^4CNo%1hLw#4=O*yXom?e2_mTGe4tKpz9jv6p<9X}B)Kf#+p$2Hs zi#68VF=cTOH>w7%cS1M(3kro% zcWQMi+T|(bk<60me73@h?|_{tsvxY7sp{3_Nlu2jm*d=f^sVl+V;*#;tUq3o(hNoK zJS7{lC%W-08tOP+lPUaHkBE6D*e#5qDzf6v6+X0h1N>@j_{bWZEAS4Tp!^45`m?A5 znXPsJ>?fSQ;e!MhLDnksCJjKEW^7G3Rv%4O9j*|F2~Uvqi(`<`6X;D@ zkNqlk#b1yyFTJh_y|pcO^1;^prg$OZkz`qC_7N=M2y$=)EWF6Qu5pk1?0vxJ9sJ5! z;it03Zz%f4%+>etT^zv@jRvvy^5pxlSYLWYd)_E#)zLzrwMo&gU$F~iP3<@|pq5@N zawohkos#|GBdgmQz-b+J-A|q;R^&^{u?bY_29qm^KB+F}W9D1OmyuwMiA%oThVdpPS5 zfA`~~eu(ZUjnxqib4{eyU1&{NNnJSL7vz5@&y|d=%G7xQJU;H=Z3y@7fnK;m9lOyF zg7Hhe<*f%`4Y;8vPEquj`(Q$an^M7VhqTg3Z7=dn|0h-*54I| z{FZ*Zj@F>28eAonkUS{8al?F$CS{- ztdF(8;F(~~S}f9~%*Q?v6zxQxDoW`RK*xh1z4XI5wEQ~i>@fP_KJ{lLzq%}#BWvJJ zgdMC$uJ__Sna}^Nk$D|6aQvj~{ybqcDES*dXeHuKZQ-i@_%tF;@(Uyzi+mTRT|AKg zaQe##?BSDOTN0eK8Xo82cxMOUdoF+%;XbIb7`wI_Iyf7Nat9~ofpfW8@nSVA+$6H% zn30tdUXcT^ksOQ&?%)eUJr3$jQ*82<=*f=!S_+4|hu5Jvev`g1*|vDUebqmB@&edI z4Kz<~_hsU`DZAg)O==8+au7?IX!*szgrH2XL|ye0d>v4TfF6q0O#=Be9gM zE+xB*f4VRzT8g-I2%5^D7^EJ}l89I7J{svbILNBAY&Xz8@4#OJ=at3(QwQzguKor_ zFQGi8u{@rEZ#&RfXSjbN%&awjhHLmt5@6Jyc$b4%?1MqP3bb1+J^l?nCy4qP09HR% z>F_93;hsL~IP}FLP^%R7QY^OnX1GRw`sPUZ$P#+%e;}j>ZPr`SPwT0tGhA^JT`>!7 zS`PWKf{{Nt>p6W$Q1cddiJ^RPSZ85e8G+nS!Xq??el-S7P>a1fA|9VXyN_I%OyAD~ zX0=BfY*6NZG+;;Mr-k!UKUsLeSE9!~R4?ewL*U_I$Yy?+b$4X_0(MJ&dS?W^b|CK? zNzKcO$2X9%A^3p<9VQ~RiLlXNt{4Db$6@_;q4iht23zR|;?eNK-r9)tR^}`>JdheZ z7VcbI4v*w~q&ADpi(Zs|K6MZQ@ACx1_99MuA?g*}rAu6#u2?c_)|toACDS3I~iVeF0Y8Z@KyBf+kNV8C5!L^v8_ zKqz%y{19=J`8lZdi^!cXh}jtISW0=n(i)!BwvAZ!32da6=nj8sB$X@TVV?d9A}&JX zKI7?cxbs;`FdGj^6OI(a`(h^6b{ls70&eREo;RhYw$ndyQPX3=l|6j=!Js~a*Wwpx z0Kb>DK&n!PR*E-%7`jf@F+Z+g%Li=Kub|v>`qo9fAA(!sdE#RH0z26AjoR?zewEO^ z%jlUG==&>SRfB2g2C&CmAiP8rT;U(?{I=0&ezE;UBC`0TQjcGFo7?o;>(tXNp7Wlg zcJ#G_TF%Bt5e$OKYTTaONyD82!1tPP81dkZDM5_363x4 zDRX(&RGuV#y$ijuhhiho^|OIYCzcMDVX5_o+KW{g~*@8yk}9?5nM44SzF9= z_i)aC-2E}zb*^5*{-Mb0aK6Rzj07+Gqrt22##%5|)=08YAHK+NX}Crk%Fu(ehEb+P z)V^#>x$_M6M1VH`AnA$pq_^~yukal!eJc!IQbMWE3e=SNfQ47Nf>SQ&s8l304x2HJ zv;QySN=7WmiXQIBb~!j)MKn!O+C&FpU8P6Np!e0KS7*R!KH=?h$8N1cZ)%TRhy~e+ zzmecYJ9={)zMH^K0+DoCvBd*k6o4d_p{Evx$CRhP_M}(#oAH9FqT#J_59sP{>D-Ey(Dg)jzqhG2(qqAIru?7th=x9sRvl8XF2N}@|J`wXY=vm zIi2apGr*VS$mLRg%e)>otglC~vem@myRr?#irfOrctWO0Zmwy7O(yTsllQ0vPYHtQ zB=Pj?oO2kKa~SW~OYSe3+XK0GH1Z)__AXc?-ns=K`@fXW9W?rm?R=Gzou*_lAc4$$ zlOH6g0taf%{TuQYA^08r!LENmUGbZEQbQ7*?oEyNN3O@?>s${9xQ2##Njt}b<|)YQ zW3Xc#GCCGa>`U!MP?xeEM1Oef8g$A>7))`nI+A`SeXT$EDr>kD!a|T$G9N1_nvPG@ zmo_hrtTl#Pw5Lx=BtlkT`4@T2L!ZovEaga97}~B4+I$HX&?T&)Br-5G=+}6D-$5p> zVwc^gr$0hJ-ay|TL8cZf5-|ilAfEoOaEE&6|1oSsu#zM`V?YNbaO5TWTP(YKSXrOY z%{sJHLALx@Q3cTJMTs{Qz#pW?p8AT+KIb_x$l+;Z_at(DkutpHIv1EuacnQK*8jmS z^u@ZAH31Xg7EicBFySQET;YicN}SgTD=m+6O-s_MWw6VtvcDd!DRxV9kfswYERmJ~LtMQ}KR|1wSH@_O^JrdLc8DmH5C0xYc?jbTl&26E9Q?5Ue)$ zYl8Gu!rL8=Ml8YK!fZv5x5iNaqWm*B za|XUK(eZ^TLpDCROn8GHJjji$R2jS&%$qN#7Ej3!I945Jtx1Ir0 znaF)6Q7^N2_B`rnw1Q<#LETm$L?@oxnOYjoxl1VPQV?qnPoKlpbCl~RaK$Ki%ruTj zjAa>rXY($sRL{MoZkNHrB(^gb_R|~e8Nho_=XtYu>Ld_r93_x#4EK>(xUBm$6r7rf zMYEH3KgY%>C)mdk%6|m!+YwrPJNMiQp6-LS9OBI`(LZA7H)na%OL)4T!*JrjzDzV% z0<886|G$C*-lYdV1<~H{-wVFqq19s1Z`t%l$qV+ugP2c=6BmI~gwu~DGs7DOW`I5T z(5L?e_i`eIV-%*b7!I)tZ94%eX`tvr8R^{`32TQo9*8DhipF2ZIm^+;OBBwq0H(W% zZ3#?#Flajj)-nw4(jWAl1_my}I+?~DC!@J%!Z2pTW~Q@e8h@8!%WZ>KoJaoODhTow zB>4ndy@sh=hd&$#IZyHTs)CJgIPwXP(qH^%*>CEJ&Co9Jb z^z#ROLO{+UpkW~SGa9vxcxx(1^^)k+3+@(&-`t^c=UhK9%7A~5WMV!#en~Vz5K*4< zlxI8!>%a3~8c$b&a>cQ8%7e6_JR>(xl+47>ls~5=68ZlHBBsE$oI%dKl%W_{9z-eP z!Ef==345BO)X6+*YBhDS58OSOMcm}?;iF2mHq9#yxbNRiLR#*i- zZh>nZV%yCbYiPkJ5OWMXxC@N2k>bq?ryqo2Wfld|swq<}p zNnn|HkW%2T>7bIZ*fcb6qQYry=vMK~slhA;nRApOgq&}o$C(wj8wVQ792B>~vfK30 z$Mn$~^x~8B?XBqTHGDQ=3GTvXxIwS|MvqS8K56vaH?ZS-Fp9_gjY02URlIHwxl0V^ z-cb7cO=M>)@;eK890e-M3UMR&HB8}E5-FUdVC`hSrz6+Gk zmHfAWb0k}36yJiQlK;~TgsP6`r!-upHt1UcCR70oYYo4X5qA|}F6G!)2u|pQ*Gv3e z5&NA5%=z=!H zrED>@=>vMpQ?%$yg~@*b!@i(nT5t5g$7Q!-*kFMQopk zAlGg1>p%AHK}MtDH``z~n>cSHSSoQzLD0QO{xL=Rh0~n`1rG5!rC4pZxL!OX2e@`K zS8Y%*crnO22Mk^T0vzQ2SHOuoAmV+6>0Ja>FX8jK4APtiM-On;a`0w3&)U!b=RnRU zAWSTn83*=$1Vi6|yMnPl6_iWl?+5mN1oh%MN08_m&pFAR#jbnK=N9*usKg@>^##Wt zQi5yjxx&4FfV6-A#}MChr`POz0GpKBI7MA-;w?77_4ZLV8A-4nG+WKvMN_&ne71vd z)6psu!92+?k=V=}-e3XvHj!GNz|pyEv(PN_sKwR1n?xBVz|;HVduu@ZNmQsDHeFdb zVJYl_BJ_w7{8t6t*NCk)$BUyQL+KYe{#5bZ{{fH8|MP_ACCXzU&oB#?=D;6dLBEP+ z|C`?Tihlc??HSuE@aqNmbs4+p2AK6k`F#Rk!+v!89`Nr7y8Q(Bbpj4>0VZ$^AKMO& z9pm>!h1VR173}BST^tb~g|M7GNY^G%Qy9xq@M{6gM!3dg1zf_9VOHsbjm z02+>9?*ycCE!VE#iV+;?1{So%`sxV#>cd(6l(TztMQ@l=H}Y!XhFs?R;Sebog6(lLjcWJg9ZdrtD<%;rLT>>jF0DD-l&kZaL z0X+jjxxCnmh4|!C?7$M7T?Ndoj)hx{eR)B!qRKNXa+k^+X`oRMYwZ5 z&I{*v1@_33LbzKIe%GLsg2vTB)*2vXeahSrq-&`#P_f=++{qB7u4H}9C~9{e>`&O< zIO=Z*b<`gnlT%au;i1Dhceujn2C;u2XN;njr+{&@!N$2N?`Zmm#F;M8H%@cLHF)0x&{3G+eem%)JxaWv_uzY9 zLB&ttaPRaFxyA*#U4)wjPc>dwZsAuR$T5Ed7iaLyU)&{! z?Ip2KO7K--mS(QWR!}e=R`{Ose&rci+*39q$I`j_Cnb8ru}@rSgpE2VL!wfe47?0Z zc;~(NI1?dNDXwc?X?g%`N-OG_j{ zIBgQhF8=cu$j3u?h**^K81Ad1Aq4@-_aoSE@V@rbSDxU1*2S!?5>B! zuH~25o(o|_!YAj!iY9>v6BXvUK#8i(0GTI&1PftQBIA3p_BJ8+o4G?2_&o|#82}o0 zg`u?tk-A}_N{mhZ_5q>$@V5tlhjZpoaJxB(CQ-=>U~6GePv&B%qhMNF(5$=S4{OE$ z!b59tW=;M!;EYNjqad;{z5-ye7k)aiunU8$bvUy$I2_Km;BQsVuB<$x1bbygj_TZ} z8Yo|iPi5F*ZT_#S;BO(YHUOl~$x3gCtu6dga@&h?W>bYzizX2tXj#fygQHTi3hXJv zcV(U>xGk{-!RNY^rZ&HtEB^X+3Q~7a?pYVk+nQPu&#CzPWDc7C_z=Xt9ao$oXlYb=|@<4ydZ4zth` zEpSpI0K#OYSLQ?v#M;W_EGrh3@qhOcwrk=F$$k$)3UVP4`H+s1$Vf@HGRRRyBt~Mw zc@#VkQ7k<{da?NZk)L85FOCfPWBa?X<>b=KsGEO4{t^oI=kTG1#6_E8@#jczTNrUu zIB*SgLRGj@6J$FQsqe)87I5K?d|KfvYXx@}#$1K(_FzJH#gE#AYlTs_W^1eX55_A# zfXVRY0o+A2MNh>~Fh2tWP`$b3mcR=nvV1 zFK&a`u43O5w2NfB3;;rT@Ngm@*~GIkPq}g_-?B-T;X?hGS8T08J4<$VbFaxJR!(h&5tmi)w={jCB&}b7{*fOoFFmOYeW4J& zrvUpUPqrY)97r#cUQ(FXEdJql0$V)X=quX~?wf%0 zC3EBpGA$km;qIa#?!vcj;f;6?*LnxTm&n0q&K9Xog;~ki0^$3|!S#b6$rUupJ??Oy z&oit6i7VcR$z4(Ib5mh{$H17g{4c&cK@-Vm&+(4zLF4S_KEegJfm7S~dl0>IRN1$W zzo!)xx~6bK$x9L~C6>Z=&fU&+hd5LA?dDs4i-++rzc+(}qNP@I2S^v3uYEaM0c*@BVL*{{93^?HuC;Ec&km^ zeI45d{;uWBMZAajzQyA@6HPk=9T16j6fGdkT%Iaf@^jc`@(xq@p3n2=EB=a+9GBHY z=2F(>yxn}>TQ>1!jO2)T=ohnp9wn39e94ZHD@O7r%-F^e@gFVV`ni-OO0mY|&f|FI z49YDnwvCdmMfK4D?RZsawCxqv1;YIw@6MVaSbOd<8?*;mnC!s7}c;~_}Bcwz$3P@*yFV~a~ZVMFjrFu6I} zLPoT-;E3?Y+U)B< z8J2_3Gtnc{LGC4rhhZ;qruAr#HDK~4<<|-YpCw~ZqH0I+Kb(deAI47+t#IQL*eH7y zFU@~2=&RTlw_)C5g}lHT5u4;GoBX;92fqTdKF4;JyNEaUDn~wH1AM}tBAi@2Lt?|c z;I~*O&lQ{GCDzUd&iaW3@dNwh1IHgKHj$ijSFww(!0TV(llh`-pZNZPwUEsAOY!Ao zVl$}JX6%ww>g!jO-GlEI^bOH#EnpgL=m~u|qnTn;{L8+U ziYKQkeMPp)Xrp3iEkFE$GDcKGBv-sSeptGp^gkIlSBh`ZRib~q&^VHhVWQ7|Ljpc1 zJza9jBn#yw((n+({6FasJ@Az6J~DV(LFZkHcV+{KcoB)q@owG*Wp5&>$2sE^k||!H zvq-pnPJ+sZ(F5ldhWQ`Tx(94s3HB^haAhHwG9I7KRM0~>te}XXa88s;qD(Re+!T&a z2A9TyPdPS3Z>)y)aBkty^%VcGte_x%;XpWlaTs_htN`Kg6_iapGsQR(g3q}a47`@Y zy~Vdu7WOW)4&>!Kj89(f5rnnit&Gty;ANIvggoReh)+k2U)z&CuH-j4>}vKnVO_|m zBDp#rpZq+fAfB0U#mW#LcRv0r&U0iWt;8l9P-?L}#7`p@PASEYlj9}w#iQ-V(*n3- zFjp2*-l7biA+bdot+YYqZ}{uyx=6*VB?Iw^z}=GFDT# z!(%q_X$$gxhG`_RCBQF|@f=ze%QO#tFX(^vYznOAmvWXwT*O9|(N`*bjs{THLavZ2 zOejBFC|iDbSTV&PQy-2e(h_HV9M4VyzrOv?*CQU5WIR1N+ix)MJD()5PLM7MPs|Vg7thWwj(h~?zTry| z&rkyU1QW&UB53$Sxu3PNce2SCmql!IsZojN&7|(vutm`h zL$FA4T4*3`){XYF9;8zYm|@VCE2NFeh3%Q9(|r(aE&iR6a9ljXBhBPULSK z?YI*GA#3~l7S&}BJ8AP57G9Q;h_)FlrO=&*C5{mdWQH=azrq=5FF|xlNCfj7YtLcQSJ5D{PgOQ23QX9~4%pg>kwnzQ7PLFod2Q3?}-~lXL7q z9h}q^UGK+{f>^Gl*u?vhhaO)LxsZ`9RfzXh#~N;h&EHPp5#pa{3agL^pUh-Y2^o^S zq00QOkBs$Jc!`XTk$gq5u)Fi!lP!X~$W_hZqP;oVhi{1pj)uidN2Y~=$|j!gNm%Lg zVV#n{xC)Fo0CwC1MI=k$Gl=*An1pd2=Gp~TH!chfzZ^F=o+3w|h$>ZF? zlUH;0Oz?dkzjkr-G%WY7!b>G?C;4fD(wE@1S3vmZAmw}TP4?g7`w{PP4fNa0^W<$e za@WJ~W?4OE9c4O9*-lZ4L%i8WkZ>hOWMt7L_6e(&a_r_^H?s*^E(0aUQU5~~Z^#5# z{cr^hyHeA`s9Et(kDw*Q-;pzNrxAbKf{o$}=}h}b+qU6X&X_V8o!_6963>)GcPrw% z$VHzKEt}JKeDIF>(}Vo!S)ocV6933QAf^j~oQaNp5B^Cu!c#1xczULRvjgd2Uf4o^ z>94Vzlc4BwiB^9?3dF{Lz!l;XkSlK?H^LlF(Ela2a}L?r1!77*#34nxu7afhu?bH+ zio{8L@HqH-9X6RW&iNR~8O^p2-gpc=-2wZ|$yAz&{VMrkGmz>@d`o82EM!<_aozRj?|jTwS?$5B`_2fUUTz%&*cDUN??66h1ticNA7Pj*<#`i=Vlo zg1HsI|CW@hFXieJhc*q-7TIM@ueJ~hQ%&F#da3dI!Rq^ zK%Yteh}<#C*(cvQ1g zTWF;Wv7}{9F{>Gsmq8j^jaliBh{+f#N=edYsGYInEm2;E2FqyBG-4Kc8xz{RrD*iR zY$C-}EAnjHv!Bno+I`ORpSk~g&pG$pd(Qcu@Abs(i!EV^xX*6m-v#XT>e#hTRkjUM3 zDP;>m#?^s$eHbhm)bSk(IHkpGWQnnf9P_~^C8wi!s%%)7aSWGm-&NGI0Yok0-uXP? za^8x2*d>&h1$IxRTpnnqeS&-YRg{~<`58Q!a^0ysTO_AdCM%1J@wY#3vM=vR>4bY( zR}ZD;@^#mg2Uw4K&{xgFs@9BtOM`o zPJG(1r)>m&U4o^%zYFmZ`&Xr+pYr)E>}5Y-G*)o#SQt-6BDt0lH!y;(0R_(o4tNI5 z!w(!CBi~WRp1O$>j9fL&pHgQT==C~dUinoXaYg@knV@S&(sV zzQ7yaqI40dkU6Fm_h?v%8u$_5MI^}^9_)sU2PuEl#w!y9Qn&sLIb+Q16lS&-OvYMj z!CtTMG~(uFJrZFX+dU^x{5nM;W6U%@WoXby~)UQlE90 zTuR5?sT%v}1nb;RN|#;8qaEsTB;Q8YIL{b4O>Xh49^*%^<;#N9z9GkIZtHaXup5~VH^SpOa4m@|$uO=zGJ^)f z0Q?MQHCM}{{i-s*NV=B`0<8qg_Ja({!#;tTY~;*Ba7|mwZ1_!1n8#X9D*JntPd?bO zhS@KFT1XArv(5>#x`0`}0c6|>j+Jw?nmHd?Z@mKAO=iYVWY;zu!mHMSf?N2k<#-XTTuXh%$+RUU+)oRz0+Ot65zn3- z_|*vBot!Tl?)N0Pua;~)@8@M&{2Yu{CMCa8ljk}xl3emK<2LCbWDF-Iuo;w8j`s+C zN|FJ2_X7)__g=XKe(zN?5tI*V6l1do8~$U=NxDGjOk@ZTmCKxlw#mx8Xili*u#( z?oqY;)&^DG!wblh)cLgIDfPmU`4x&UKuuzVpy{h}bD6!09?rXFN!GB@#ewPV0k{My1o* zUfa~(JdG9%g98Wb&b>rW>l#cQ&x3C{e5M51+kB*M+EdI0*Cz4yhLI;mdF}NFfd3;Y zA;)`x5^7M?!WcbpGT)7aqz=p|eR5)TUV1`LC(q0D;d;i#4*Giy=^aLly85m3@&d}* zb1zbZcV5UiDCK%2;izQ&Q-gn!akv*2W+~bFo77ScD!Mz>%kM1Gle3^;MUVz7*)1lI zqo#!MWaP1GAl)s@pMlJd$Cx#}SkW7Rf7S4KtK#}`R$_H5^;x~UfNy;QB5Hw}%*tMm zd_Qo9pYafH5VR#dU=@#pJM)<3?xyl#A4=v%F&{foLTOKZR`cuN4PCh3bD)%3j_Gi( z2}s$U;qGT+%-#o?tw!H^6|`6h{wcB2KItT=xhw1@3#nfV)#)I@L>S&!?mQPPQD30# z)e*4n3({vGp8ME!Tq^<#=Lh@{rQQUyqUd%f10(z=oKU8x4&iO~l3J;jkk*sWJ@Gf7 zVKwaTIkjb z3PR80osWm>Jf(+S1At6^EGCA5oL;Do-;uKHM8!-@<5OA z;I3TB(#AtDUZ~pZrPQ*IyX!By7ev@d4RgTl;b3Yic-0wn>H)6GwcJUnH`ZcEZEg<7 zkwyE1U~?<*Q@uz$M}Gi0A0wZ!3W{mb8ftxwHar9dCLk+Rs@DSErx!tUJ{>_$C5uJ? zP2r9*#D3sp8aQhd^Vaei$y;mFwDKX(Ou@n8@FX)Q-CPfX^do z&7+{_ec){(h?@$ID$`8m*qv~DYLFMFgZt4Mp*5C%4oSR$-dqvsjqos(``ZFF^~Ou; zO?#s~c~9Eji&hN`+*2!LKdyJ9Ig`Qq_ag7Weq9t0UD>VNbq;6rfZ7ByYHL?Y&qh0C zWgzaV^;R_wXJiKXY2VHIPdkiY8~MfwjYS5Z4x0dGCeDEtXLl_4Ah zrQQ7;;+nZCV7Kb9k8tf=*mKKojg0ELFX!0H*gQZorpm{pPblqgAVoH`SABa z3l~ya^#IA;;=N%OcY^)8t5e2QhtKuQ%Pw%SJDIuKv}@Jgidk*6s5t8X51gq!ExVaB zP1zm(mi+2}ta%{FKL*4a%l|&i{ua#8-!R7$(5yyMOxbjd&j8kv`{8|RTkqwlH+Ygn z>cTf|dM5@=xq93@uqg*V`yA^^I@deW-b9if7`L+?b)$rFDTh$*AzBb4S5L0r1m4u) zjp(nD$cmRm4ay7`gPZD2U6y8v0o}~|UsSDAgOiAlgfsq>9$JK2J zcZvLXjVNU-QRA%2dH)91YG+&kTh9xcn6bfLbr^Tg0!s(;+=KY9_0oSH_*?CNb7p~-97Z2%$q3R0R~b@kMsiD-Lml${1hY90 zvVX}u*v;&DAM`xP-1(NV97ns{?FjL`Xl|oB5VI4;93mC z><Bm(ubzt_uXK+QiA&fm(HNZOzO>`rK4%N zR#>xW{TR;a1?O+WWzyzMjxxdT|64}6DrC`$R8|iCF_Jmb4_1G!nPBfq-jfne@pu_; zTuJ6qj+O=#U%}e8f^SPeV725^NlF){@E#uF9r(0Qz^3Q%?v;3Mr*{w0Lmx2~HqoP6 zpcPPdA$?ImJ;mU*+`-@0(1LCU{kwu|T6`@5@%4=@py#!dT1E{@Kr8ut%$U;7NekR9 zj0O8w7O{%7o@=LqX8jU86OHq51oW0|XzOjM_i4{j^85%lQTpjj5ic*|zgCFa%*Hbd z)GEa><7$J=qO+c2YE7?XM#-w1FgNv-Flv~VC~2UK`Xpz!_LX-8`Gw5tHjdK46Kz^Y z!O$X2h8lEZdE5;Q^Hr`o9UL1^O;3S7zu1?) z1TQrD#t4|acDnkw52C~*_5||+mKv{P3tV|$kc93-j!^;@Mi!{A!0fd|oeRdk0}nnG zJQBWxr5`0#!n}9GR~LYBdE{9QW8DXn{|b3Ub$lag!-y}c{u4a<+n^mk0_)z!-QMOS zt6$Hz-PG|dZ2k(oaIc2b{|i389UiP6sDymm!FT;|cfh|br5~?85Z{x&Lo%W^|1exx zk25Wa3PJC6JWT~FgSvcw2V^hYzMPuMk(d}6&*(uDdFyIf)wRR+-HZ5cd(%0N!s(VAi)^SmEwq6zCJ9uBjW+ z^sfAM6>JMyw+3^SXt{znVa#dAdID}xgE7^B@pc`f>I(2N;w##S$O$gxTwQW&AAT_- zRQ-ExMxXNETIBs6&Rr4ajF#&gLBws$r+2`+B4(|AHEFKtuJ!$|WO9(3ilPzk)b=z%SrldPpo~&a3fo zjw=&ZSMUB@?MM#DoC%Vqfnl-0DkJ?(jPFLl7dP~K(8hl-tX1uPZ+Pe}U|*wPlceR5 zu~!qRL$Cd8Y8(z4c0|_D6xOTPz|G{;m!U5ITf&NsOcW!DOX)D_UV+;y&uE0_S#{7g z4ympdP1jN425N5s^KQxC_#h+xJ!q~ZL~Eo(>N942b6B>L6>(ngHthgz;%@?H?qj7; zT479+J7M7|F#paZy>n9nvsU8#07y9w>~wWn&ik9ey7L4jyTiUyXy-7ncoJvz7Axe< zDjD}T;QGV*jh2-Q=DtL)4B}n&2mNz{%t9~SCG`AG@K(*z5wLO#gjo(0GyUm=m&%TVZ^+a%6l{@lUSQlljvt zplM$iP8vu04BW$&u3Sq;y7&b1(kNNekX@EA-w%K-YR}(AZc%`QV>0OYG;DAZIev*& zv`64D`qc?X-H*$0?WNnP8vs{C9#x zCy)SCfq=$G@fR&-fS>x_i%V*+)d1ykHXpRwNXx`aU18|gKxhw>!atxv-gz7GK-ec!2ITMVu{hW9uQ6dcN$@+Zz@ z1Us?F^J_9a@FY0cmwrj0hc5%0M5lUSnKqT~hV&|MUz7muC5AOFF09Crx9pz4B8@e8 NF(auZV? 0: gpu_info = "\n".join(gpu_infos) default_batch_size = min(mem) // 2 +elif torch.backends.mps.is_available(): + if_gpu_ok = True + gpu_infos.append("0\tApple Silicon MPS") + gpu_info = "Apple Silicon MPS detected" + default_batch_size = 4 else: gpu_info = i18n("很遗憾您这没有能用的显卡来支持您训练") default_batch_size = 1 @@ -220,6 +225,14 @@ def preprocess_dataset(trainset_dir, exp_dir, sr, n_p): os.makedirs("%s/logs/%s" % (now_dir, exp_dir), exist_ok=True) f = open("%s/logs/%s/preprocess.log" % (now_dir, exp_dir), "w") f.close() + + # Verify trainset_dir exists + if not os.path.exists(trainset_dir): + error_msg = f"Training folder does not exist: {trainset_dir}" + logger.error(error_msg) + yield error_msg + return + cmd = '"%s" infer/modules/train/preprocess.py "%s" %s %s "%s/logs/%s" %s %.1f' % ( config.python_cmd, trainset_dir, @@ -231,8 +244,19 @@ def preprocess_dataset(trainset_dir, exp_dir, sr, n_p): config.preprocess_per, ) logger.info("Execute: " + cmd) - # , stdin=PIPE, stdout=PIPE,stderr=PIPE,cwd=now_dir - p = Popen(cmd, shell=True) + print(f"Starting preprocessing: {cmd}") + # Use shell=False with proper argument list for better reliability + cmd_args = [ + config.python_cmd, + "infer/modules/train/preprocess.py", + trainset_dir, + str(sr), + str(n_p), + f"{now_dir}/logs/{exp_dir}", + str(config.noparallel), + str(config.preprocess_per), + ] + p = Popen(cmd_args, cwd=now_dir) # 煞笔gr, popen read都非得全跑完了再一次性读取, 不用gr就正常读一句输出一句;只能额外弄出一个文本流定时读 done = [False] threading.Thread( diff --git a/infer-web.pyi b/infer-web.pyi new file mode 100644 index 000000000..9b6cfe35f --- /dev/null +++ b/infer-web.pyi @@ -0,0 +1,1625 @@ +import os +import sys +from dotenv import load_dotenv + +now_dir = os.getcwd() +sys.path.append(now_dir) +load_dotenv() +from infer.modules.vc.modules import VC +from infer.modules.uvr5.modules import uvr +from infer.lib.train.process_ckpt import ( + change_info, + extract_small_model, + merge, + show_info, +) +from i18n.i18n import I18nAuto +from configs.config import Config +from sklearn.cluster import MiniBatchKMeans +import torch, platform +import numpy as np +import gradio as gr +import faiss +import fairseq +import pathlib +import json +from time import sleep +from subprocess import Popen +from random import shuffle +import warnings +import traceback +import threading +import shutil +import logging + + +logging.getLogger("numba").setLevel(logging.WARNING) +logging.getLogger("httpx").setLevel(logging.WARNING) + +logger = logging.getLogger(__name__) + +tmp = os.path.join(now_dir, "TEMP") +shutil.rmtree(tmp, ignore_errors=True) +shutil.rmtree("%s/runtime/Lib/site-packages/infer_pack" % (now_dir), ignore_errors=True) +shutil.rmtree("%s/runtime/Lib/site-packages/uvr5_pack" % (now_dir), ignore_errors=True) +os.makedirs(tmp, exist_ok=True) +os.makedirs(os.path.join(now_dir, "logs"), exist_ok=True) +os.makedirs(os.path.join(now_dir, "assets/weights"), exist_ok=True) +os.environ["TEMP"] = tmp +warnings.filterwarnings("ignore") +torch.manual_seed(114514) + + +config = Config() +vc = VC(config) + + +if config.dml == True: + + def forward_dml(ctx, x, scale): + ctx.scale = scale + res = x.clone().detach() + return res + + fairseq.modules.grad_multiply.GradMultiply.forward = forward_dml +i18n = I18nAuto() +logger.info(i18n) +# 判断是否有能用来训练和加速推理的N卡 +ngpu = torch.cuda.device_count() +gpu_infos = [] +mem = [] +if_gpu_ok = False + +if torch.cuda.is_available() or ngpu != 0: + for i in range(ngpu): + gpu_name = torch.cuda.get_device_name(i) + if any( + value in gpu_name.upper() + for value in [ + "10", + "16", + "20", + "30", + "40", + "A2", + "A3", + "A4", + "P4", + "A50", + "500", + "A60", + "70", + "80", + "90", + "M4", + "T4", + "TITAN", + "4060", + "L", + "6000", + ] + ): + # A10#A100#V100#A40#P40#M40#K80#A4500 + if_gpu_ok = True # 至少有一张能用的N卡 + gpu_infos.append("%s\t%s" % (i, gpu_name)) + mem.append( + int( + torch.cuda.get_device_properties(i).total_memory + / 1024 + / 1024 + / 1024 + + 0.4 + ) + ) +if if_gpu_ok and len(gpu_infos) > 0: + gpu_info = "\n".join(gpu_infos) + default_batch_size = min(mem) // 2 +else: + gpu_info = i18n("很遗憾您这没有能用的显卡来支持您训练") + default_batch_size = 1 +gpus = "-".join([i[0] for i in gpu_infos]) + +from gradio.events import Dependency + +class ToolButton(gr.Button, gr.components.FormComponent): + """Small button with single emoji as text, fits inside gradio forms""" + + def __init__(self, **kwargs): + super().__init__(variant="tool", **kwargs) + + def get_block_name(self): + return "button" + from typing import Callable, Literal, Sequence, Any, TYPE_CHECKING + from gradio.blocks import Block + if TYPE_CHECKING: + from gradio.components import Timer + from gradio.components.base import Component + + +weight_root = os.getenv("weight_root") +weight_uvr5_root = os.getenv("weight_uvr5_root") +index_root = os.getenv("index_root") +outside_index_root = os.getenv("outside_index_root") + +names = [] +for name in os.listdir(weight_root): + if name.endswith(".pth"): + names.append(name) +index_paths = [] + + +def lookup_indices(index_root): + global index_paths + for root, dirs, files in os.walk(index_root, topdown=False): + for name in files: + if name.endswith(".index") and "trained" not in name: + index_paths.append("%s/%s" % (root, name)) + + +lookup_indices(index_root) +lookup_indices(outside_index_root) +uvr5_names = [] +for name in os.listdir(weight_uvr5_root): + if name.endswith(".pth") or "onnx" in name: + uvr5_names.append(name.replace(".pth", "")) + + +def change_choices(): + names = [] + for name in os.listdir(weight_root): + if name.endswith(".pth"): + names.append(name) + index_paths = [] + for root, dirs, files in os.walk(index_root, topdown=False): + for name in files: + if name.endswith(".index") and "trained" not in name: + index_paths.append("%s/%s" % (root, name)) + return {"choices": sorted(names), "__type__": "update"}, { + "choices": sorted(index_paths), + "__type__": "update", + } + + +def clean(): + return {"value": "", "__type__": "update"} + + +def export_onnx(ModelPath, ExportedPath): + from infer.modules.onnx.export import export_onnx as eo + + eo(ModelPath, ExportedPath) + + +sr_dict = { + "32k": 32000, + "40k": 40000, + "48k": 48000, +} + + +def if_done(done, p): + while 1: + if p.poll() is None: + sleep(0.5) + else: + break + done[0] = True + + +def if_done_multi(done, ps): + while 1: + # poll==None代表进程未结束 + # 只要有一个进程未结束都不停 + flag = 1 + for p in ps: + if p.poll() is None: + flag = 0 + sleep(0.5) + break + if flag == 1: + break + done[0] = True + + +def preprocess_dataset(trainset_dir, exp_dir, sr, n_p): + sr = sr_dict[sr] + os.makedirs("%s/logs/%s" % (now_dir, exp_dir), exist_ok=True) + f = open("%s/logs/%s/preprocess.log" % (now_dir, exp_dir), "w") + f.close() + cmd = '"%s" infer/modules/train/preprocess.py "%s" %s %s "%s/logs/%s" %s %.1f' % ( + config.python_cmd, + trainset_dir, + sr, + n_p, + now_dir, + exp_dir, + config.noparallel, + config.preprocess_per, + ) + logger.info("Execute: " + cmd) + # , stdin=PIPE, stdout=PIPE,stderr=PIPE,cwd=now_dir + p = Popen(cmd, shell=True) + # 煞笔gr, popen read都非得全跑完了再一次性读取, 不用gr就正常读一句输出一句;只能额外弄出一个文本流定时读 + done = [False] + threading.Thread( + target=if_done, + args=( + done, + p, + ), + ).start() + while 1: + with open("%s/logs/%s/preprocess.log" % (now_dir, exp_dir), "r") as f: + yield (f.read()) + sleep(1) + if done[0]: + break + with open("%s/logs/%s/preprocess.log" % (now_dir, exp_dir), "r") as f: + log = f.read() + logger.info(log) + yield log + + +# but2.click(extract_f0,[gpus6,np7,f0method8,if_f0_3,trainset_dir4],[info2]) +def extract_f0_feature(gpus, n_p, f0method, if_f0, exp_dir, version19, gpus_rmvpe): + gpus = gpus.split("-") + os.makedirs("%s/logs/%s" % (now_dir, exp_dir), exist_ok=True) + f = open("%s/logs/%s/extract_f0_feature.log" % (now_dir, exp_dir), "w") + f.close() + if if_f0: + if f0method != "rmvpe_gpu": + cmd = ( + '"%s" infer/modules/train/extract/extract_f0_print.py "%s/logs/%s" %s %s' + % ( + config.python_cmd, + now_dir, + exp_dir, + n_p, + f0method, + ) + ) + logger.info("Execute: " + cmd) + p = Popen( + cmd, shell=True, cwd=now_dir + ) # , stdin=PIPE, stdout=PIPE,stderr=PIPE + # 煞笔gr, popen read都非得全跑完了再一次性读取, 不用gr就正常读一句输出一句;只能额外弄出一个文本流定时读 + done = [False] + threading.Thread( + target=if_done, + args=( + done, + p, + ), + ).start() + else: + if gpus_rmvpe != "-": + gpus_rmvpe = gpus_rmvpe.split("-") + leng = len(gpus_rmvpe) + ps = [] + for idx, n_g in enumerate(gpus_rmvpe): + cmd = ( + '"%s" infer/modules/train/extract/extract_f0_rmvpe.py %s %s %s "%s/logs/%s" %s ' + % ( + config.python_cmd, + leng, + idx, + n_g, + now_dir, + exp_dir, + config.is_half, + ) + ) + logger.info("Execute: " + cmd) + p = Popen( + cmd, shell=True, cwd=now_dir + ) # , shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=now_dir + ps.append(p) + # 煞笔gr, popen read都非得全跑完了再一次性读取, 不用gr就正常读一句输出一句;只能额外弄出一个文本流定时读 + done = [False] + threading.Thread( + target=if_done_multi, # + args=( + done, + ps, + ), + ).start() + else: + cmd = ( + config.python_cmd + + ' infer/modules/train/extract/extract_f0_rmvpe_dml.py "%s/logs/%s" ' + % ( + now_dir, + exp_dir, + ) + ) + logger.info("Execute: " + cmd) + p = Popen( + cmd, shell=True, cwd=now_dir + ) # , shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=now_dir + p.wait() + done = [True] + while 1: + with open( + "%s/logs/%s/extract_f0_feature.log" % (now_dir, exp_dir), "r" + ) as f: + yield (f.read()) + sleep(1) + if done[0]: + break + with open("%s/logs/%s/extract_f0_feature.log" % (now_dir, exp_dir), "r") as f: + log = f.read() + logger.info(log) + yield log + # 对不同part分别开多进程 + """ + n_part=int(sys.argv[1]) + i_part=int(sys.argv[2]) + i_gpu=sys.argv[3] + exp_dir=sys.argv[4] + os.environ["CUDA_VISIBLE_DEVICES"]=str(i_gpu) + """ + leng = len(gpus) + ps = [] + for idx, n_g in enumerate(gpus): + cmd = ( + '"%s" infer/modules/train/extract_feature_print.py %s %s %s %s "%s/logs/%s" %s %s' + % ( + config.python_cmd, + config.device, + leng, + idx, + n_g, + now_dir, + exp_dir, + version19, + config.is_half, + ) + ) + logger.info("Execute: " + cmd) + p = Popen( + cmd, shell=True, cwd=now_dir + ) # , shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=now_dir + ps.append(p) + # 煞笔gr, popen read都非得全跑完了再一次性读取, 不用gr就正常读一句输出一句;只能额外弄出一个文本流定时读 + done = [False] + threading.Thread( + target=if_done_multi, + args=( + done, + ps, + ), + ).start() + while 1: + with open("%s/logs/%s/extract_f0_feature.log" % (now_dir, exp_dir), "r") as f: + yield (f.read()) + sleep(1) + if done[0]: + break + with open("%s/logs/%s/extract_f0_feature.log" % (now_dir, exp_dir), "r") as f: + log = f.read() + logger.info(log) + yield log + + +def get_pretrained_models(path_str, f0_str, sr2): + if_pretrained_generator_exist = os.access( + "assets/pretrained%s/%sG%s.pth" % (path_str, f0_str, sr2), os.F_OK + ) + if_pretrained_discriminator_exist = os.access( + "assets/pretrained%s/%sD%s.pth" % (path_str, f0_str, sr2), os.F_OK + ) + if not if_pretrained_generator_exist: + logger.warning( + "assets/pretrained%s/%sG%s.pth not exist, will not use pretrained model", + path_str, + f0_str, + sr2, + ) + if not if_pretrained_discriminator_exist: + logger.warning( + "assets/pretrained%s/%sD%s.pth not exist, will not use pretrained model", + path_str, + f0_str, + sr2, + ) + return ( + ( + "assets/pretrained%s/%sG%s.pth" % (path_str, f0_str, sr2) + if if_pretrained_generator_exist + else "" + ), + ( + "assets/pretrained%s/%sD%s.pth" % (path_str, f0_str, sr2) + if if_pretrained_discriminator_exist + else "" + ), + ) + + +def change_sr2(sr2, if_f0_3, version19): + path_str = "" if version19 == "v1" else "_v2" + f0_str = "f0" if if_f0_3 else "" + return get_pretrained_models(path_str, f0_str, sr2) + + +def change_version19(sr2, if_f0_3, version19): + path_str = "" if version19 == "v1" else "_v2" + if sr2 == "32k" and version19 == "v1": + sr2 = "40k" + to_return_sr2 = ( + {"choices": ["40k", "48k"], "__type__": "update", "value": sr2} + if version19 == "v1" + else {"choices": ["40k", "48k", "32k"], "__type__": "update", "value": sr2} + ) + f0_str = "f0" if if_f0_3 else "" + return ( + *get_pretrained_models(path_str, f0_str, sr2), + to_return_sr2, + ) + + +def change_f0(if_f0_3, sr2, version19): # f0method8,pretrained_G14,pretrained_D15 + path_str = "" if version19 == "v1" else "_v2" + return ( + {"visible": if_f0_3, "__type__": "update"}, + {"visible": if_f0_3, "__type__": "update"}, + *get_pretrained_models(path_str, "f0" if if_f0_3 == True else "", sr2), + ) + + +# but3.click(click_train,[exp_dir1,sr2,if_f0_3,save_epoch10,total_epoch11,batch_size12,if_save_latest13,pretrained_G14,pretrained_D15,gpus16]) +def click_train( + exp_dir1, + sr2, + if_f0_3, + spk_id5, + save_epoch10, + total_epoch11, + batch_size12, + if_save_latest13, + pretrained_G14, + pretrained_D15, + gpus16, + if_cache_gpu17, + if_save_every_weights18, + version19, +): + # 生成filelist + exp_dir = "%s/logs/%s" % (now_dir, exp_dir1) + os.makedirs(exp_dir, exist_ok=True) + gt_wavs_dir = "%s/0_gt_wavs" % (exp_dir) + feature_dir = ( + "%s/3_feature256" % (exp_dir) + if version19 == "v1" + else "%s/3_feature768" % (exp_dir) + ) + if if_f0_3: + f0_dir = "%s/2a_f0" % (exp_dir) + f0nsf_dir = "%s/2b-f0nsf" % (exp_dir) + names = ( + set([name.split(".")[0] for name in os.listdir(gt_wavs_dir)]) + & set([name.split(".")[0] for name in os.listdir(feature_dir)]) + & set([name.split(".")[0] for name in os.listdir(f0_dir)]) + & set([name.split(".")[0] for name in os.listdir(f0nsf_dir)]) + ) + else: + names = set([name.split(".")[0] for name in os.listdir(gt_wavs_dir)]) & set( + [name.split(".")[0] for name in os.listdir(feature_dir)] + ) + opt = [] + for name in names: + if if_f0_3: + opt.append( + "%s/%s.wav|%s/%s.npy|%s/%s.wav.npy|%s/%s.wav.npy|%s" + % ( + gt_wavs_dir.replace("\\", "\\\\"), + name, + feature_dir.replace("\\", "\\\\"), + name, + f0_dir.replace("\\", "\\\\"), + name, + f0nsf_dir.replace("\\", "\\\\"), + name, + spk_id5, + ) + ) + else: + opt.append( + "%s/%s.wav|%s/%s.npy|%s" + % ( + gt_wavs_dir.replace("\\", "\\\\"), + name, + feature_dir.replace("\\", "\\\\"), + name, + spk_id5, + ) + ) + fea_dim = 256 if version19 == "v1" else 768 + if if_f0_3: + for _ in range(2): + opt.append( + "%s/logs/mute/0_gt_wavs/mute%s.wav|%s/logs/mute/3_feature%s/mute.npy|%s/logs/mute/2a_f0/mute.wav.npy|%s/logs/mute/2b-f0nsf/mute.wav.npy|%s" + % (now_dir, sr2, now_dir, fea_dim, now_dir, now_dir, spk_id5) + ) + else: + for _ in range(2): + opt.append( + "%s/logs/mute/0_gt_wavs/mute%s.wav|%s/logs/mute/3_feature%s/mute.npy|%s" + % (now_dir, sr2, now_dir, fea_dim, spk_id5) + ) + shuffle(opt) + with open("%s/filelist.txt" % exp_dir, "w") as f: + f.write("\n".join(opt)) + logger.debug("Write filelist done") + # 生成config#无需生成config + # cmd = python_cmd + " train_nsf_sim_cache_sid_load_pretrain.py -e mi-test -sr 40k -f0 1 -bs 4 -g 0 -te 10 -se 5 -pg pretrained/f0G40k.pth -pd pretrained/f0D40k.pth -l 1 -c 0" + logger.info("Use gpus: %s", str(gpus16)) + if pretrained_G14 == "": + logger.info("No pretrained Generator") + if pretrained_D15 == "": + logger.info("No pretrained Discriminator") + if version19 == "v1" or sr2 == "40k": + config_path = "v1/%s.json" % sr2 + else: + config_path = "v2/%s.json" % sr2 + config_save_path = os.path.join(exp_dir, "config.json") + if not pathlib.Path(config_save_path).exists(): + with open(config_save_path, "w", encoding="utf-8") as f: + json.dump( + config.json_config[config_path], + f, + ensure_ascii=False, + indent=4, + sort_keys=True, + ) + f.write("\n") + if gpus16: + cmd = ( + '"%s" infer/modules/train/train.py -e "%s" -sr %s -f0 %s -bs %s -g %s -te %s -se %s %s %s -l %s -c %s -sw %s -v %s' + % ( + config.python_cmd, + exp_dir1, + sr2, + 1 if if_f0_3 else 0, + batch_size12, + gpus16, + total_epoch11, + save_epoch10, + "-pg %s" % pretrained_G14 if pretrained_G14 != "" else "", + "-pd %s" % pretrained_D15 if pretrained_D15 != "" else "", + 1 if if_save_latest13 == i18n("是") else 0, + 1 if if_cache_gpu17 == i18n("是") else 0, + 1 if if_save_every_weights18 == i18n("是") else 0, + version19, + ) + ) + else: + cmd = ( + '"%s" infer/modules/train/train.py -e "%s" -sr %s -f0 %s -bs %s -te %s -se %s %s %s -l %s -c %s -sw %s -v %s' + % ( + config.python_cmd, + exp_dir1, + sr2, + 1 if if_f0_3 else 0, + batch_size12, + total_epoch11, + save_epoch10, + "-pg %s" % pretrained_G14 if pretrained_G14 != "" else "", + "-pd %s" % pretrained_D15 if pretrained_D15 != "" else "", + 1 if if_save_latest13 == i18n("是") else 0, + 1 if if_cache_gpu17 == i18n("是") else 0, + 1 if if_save_every_weights18 == i18n("是") else 0, + version19, + ) + ) + logger.info("Execute: " + cmd) + p = Popen(cmd, shell=True, cwd=now_dir) + p.wait() + return "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log" + + +# but4.click(train_index, [exp_dir1], info3) +def train_index(exp_dir1, version19): + # exp_dir = "%s/logs/%s" % (now_dir, exp_dir1) + exp_dir = "logs/%s" % (exp_dir1) + os.makedirs(exp_dir, exist_ok=True) + feature_dir = ( + "%s/3_feature256" % (exp_dir) + if version19 == "v1" + else "%s/3_feature768" % (exp_dir) + ) + if not os.path.exists(feature_dir): + return "请先进行特征提取!" + listdir_res = list(os.listdir(feature_dir)) + if len(listdir_res) == 0: + return "请先进行特征提取!" + infos = [] + npys = [] + for name in sorted(listdir_res): + phone = np.load("%s/%s" % (feature_dir, name)) + npys.append(phone) + big_npy = np.concatenate(npys, 0) + big_npy_idx = np.arange(big_npy.shape[0]) + np.random.shuffle(big_npy_idx) + big_npy = big_npy[big_npy_idx] + if big_npy.shape[0] > 2e5: + infos.append("Trying doing kmeans %s shape to 10k centers." % big_npy.shape[0]) + yield "\n".join(infos) + try: + big_npy = ( + MiniBatchKMeans( + n_clusters=10000, + verbose=True, + batch_size=256 * config.n_cpu, + compute_labels=False, + init="random", + ) + .fit(big_npy) + .cluster_centers_ + ) + except: + info = traceback.format_exc() + logger.info(info) + infos.append(info) + yield "\n".join(infos) + + np.save("%s/total_fea.npy" % exp_dir, big_npy) + n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])), big_npy.shape[0] // 39) + infos.append("%s,%s" % (big_npy.shape, n_ivf)) + yield "\n".join(infos) + index = faiss.index_factory(256 if version19 == "v1" else 768, "IVF%s,Flat" % n_ivf) + # index = faiss.index_factory(256if version19=="v1"else 768, "IVF%s,PQ128x4fs,RFlat"%n_ivf) + infos.append("training") + yield "\n".join(infos) + index_ivf = faiss.extract_index_ivf(index) # + index_ivf.nprobe = 1 + index.train(big_npy) + faiss.write_index( + index, + "%s/trained_IVF%s_Flat_nprobe_%s_%s_%s.index" + % (exp_dir, n_ivf, index_ivf.nprobe, exp_dir1, version19), + ) + infos.append("adding") + yield "\n".join(infos) + batch_size_add = 8192 + for i in range(0, big_npy.shape[0], batch_size_add): + index.add(big_npy[i : i + batch_size_add]) + faiss.write_index( + index, + "%s/added_IVF%s_Flat_nprobe_%s_%s_%s.index" + % (exp_dir, n_ivf, index_ivf.nprobe, exp_dir1, version19), + ) + infos.append( + "成功构建索引 added_IVF%s_Flat_nprobe_%s_%s_%s.index" + % (n_ivf, index_ivf.nprobe, exp_dir1, version19) + ) + try: + link = os.link if platform.system() == "Windows" else os.symlink + link( + "%s/added_IVF%s_Flat_nprobe_%s_%s_%s.index" + % (exp_dir, n_ivf, index_ivf.nprobe, exp_dir1, version19), + "%s/%s_IVF%s_Flat_nprobe_%s_%s_%s.index" + % ( + outside_index_root, + exp_dir1, + n_ivf, + index_ivf.nprobe, + exp_dir1, + version19, + ), + ) + infos.append("链接索引到外部-%s" % (outside_index_root)) + except: + infos.append("链接索引到外部-%s失败" % (outside_index_root)) + + # faiss.write_index(index, '%s/added_IVF%s_Flat_FastScan_%s.index'%(exp_dir,n_ivf,version19)) + # infos.append("成功构建索引,added_IVF%s_Flat_FastScan_%s.index"%(n_ivf,version19)) + yield "\n".join(infos) + + +# but5.click(train1key, [exp_dir1, sr2, if_f0_3, trainset_dir4, spk_id5, gpus6, np7, f0method8, save_epoch10, total_epoch11, batch_size12, if_save_latest13, pretrained_G14, pretrained_D15, gpus16, if_cache_gpu17], info3) +def train1key( + exp_dir1, + sr2, + if_f0_3, + trainset_dir4, + spk_id5, + np7, + f0method8, + save_epoch10, + total_epoch11, + batch_size12, + if_save_latest13, + pretrained_G14, + pretrained_D15, + gpus16, + if_cache_gpu17, + if_save_every_weights18, + version19, + gpus_rmvpe, +): + infos = [] + + def get_info_str(strr): + infos.append(strr) + return "\n".join(infos) + + # step1:处理数据 + yield get_info_str(i18n("step1:正在处理数据")) + [get_info_str(_) for _ in preprocess_dataset(trainset_dir4, exp_dir1, sr2, np7)] + + # step2a:提取音高 + yield get_info_str(i18n("step2:正在提取音高&正在提取特征")) + [ + get_info_str(_) + for _ in extract_f0_feature( + gpus16, np7, f0method8, if_f0_3, exp_dir1, version19, gpus_rmvpe + ) + ] + + # step3a:训练模型 + yield get_info_str(i18n("step3a:正在训练模型")) + click_train( + exp_dir1, + sr2, + if_f0_3, + spk_id5, + save_epoch10, + total_epoch11, + batch_size12, + if_save_latest13, + pretrained_G14, + pretrained_D15, + gpus16, + if_cache_gpu17, + if_save_every_weights18, + version19, + ) + yield get_info_str( + i18n("训练结束, 您可查看控制台训练日志或实验文件夹下的train.log") + ) + + # step3b:训练索引 + [get_info_str(_) for _ in train_index(exp_dir1, version19)] + yield get_info_str(i18n("全流程结束!")) + + +# ckpt_path2.change(change_info_,[ckpt_path2],[sr__,if_f0__]) +def change_info_(ckpt_path): + if not os.path.exists(ckpt_path.replace(os.path.basename(ckpt_path), "train.log")): + return {"__type__": "update"}, {"__type__": "update"}, {"__type__": "update"} + try: + with open( + ckpt_path.replace(os.path.basename(ckpt_path), "train.log"), "r" + ) as f: + info = eval(f.read().strip("\n").split("\n")[0].split("\t")[-1]) + sr, f0 = info["sample_rate"], info["if_f0"] + version = "v2" if ("version" in info and info["version"] == "v2") else "v1" + return sr, str(f0), version + except: + traceback.print_exc() + return {"__type__": "update"}, {"__type__": "update"}, {"__type__": "update"} + + +F0GPUVisible = config.dml == False + + +def change_f0_method(f0method8): + if f0method8 == "rmvpe_gpu": + visible = F0GPUVisible + else: + visible = False + return {"visible": visible, "__type__": "update"} + + +with gr.Blocks(title="RVC WebUI") as app: + gr.Markdown("## RVC WebUI") + gr.Markdown( + value=i18n( + "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责.
如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE." + ) + ) + with gr.Tabs(): + with gr.TabItem(i18n("模型推理")): + with gr.Row(): + sid0 = gr.Dropdown(label=i18n("推理音色"), choices=sorted(names)) + with gr.Column(): + refresh_button = gr.Button( + i18n("刷新音色列表和索引路径"), variant="primary" + ) + clean_button = gr.Button(i18n("卸载音色省显存"), variant="primary") + spk_item = gr.Slider( + minimum=0, + maximum=2333, + step=1, + label=i18n("请选择说话人id"), + value=0, + visible=False, + interactive=True, + ) + clean_button.click( + fn=clean, inputs=[], outputs=[sid0], api_name="infer_clean" + ) + with gr.TabItem(i18n("单次推理")): + with gr.Group(): + with gr.Row(): + with gr.Column(): + vc_transform0 = gr.Number( + label=i18n("变调(整数, 半音数量, 升八度12降八度-12)"), + value=0, + ) + input_audio0 = gr.Textbox( + label=i18n( + "输入待处理音频文件路径(默认是正确格式示例)" + ), + placeholder="C:\\Users\\Desktop\\audio_example.wav", + ) + file_index1 = gr.Textbox( + label=i18n( + "特征检索库文件路径,为空则使用下拉的选择结果" + ), + placeholder="C:\\Users\\Desktop\\model_example.index", + interactive=True, + ) + file_index2 = gr.Dropdown( + label=i18n("自动检测index路径,下拉式选择(dropdown)"), + choices=sorted(index_paths), + interactive=True, + ) + f0method0 = gr.Radio( + label=i18n( + "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU" + ), + choices=( + ["pm", "harvest", "crepe", "rmvpe"] + if config.dml == False + else ["pm", "harvest", "rmvpe"] + ), + value="rmvpe", + interactive=True, + ) + + with gr.Column(): + resample_sr0 = gr.Slider( + minimum=0, + maximum=48000, + label=i18n("后处理重采样至最终采样率,0为不进行重采样"), + value=0, + step=1, + interactive=True, + ) + rms_mix_rate0 = gr.Slider( + minimum=0, + maximum=1, + label=i18n( + "输入源音量包络替换输出音量包络融合比例,越靠近1越使用输出包络" + ), + value=0.25, + interactive=True, + ) + protect0 = gr.Slider( + minimum=0, + maximum=0.5, + label=i18n( + "保护清辅音和呼吸声,防止电音撕裂等artifact,拉满0.5不开启,调低加大保护力度但可能降低索引效果" + ), + value=0.33, + step=0.01, + interactive=True, + ) + filter_radius0 = gr.Slider( + minimum=0, + maximum=7, + label=i18n( + ">=3则使用对harvest音高识别的结果使用中值滤波,数值为滤波半径,使用可以削弱哑音" + ), + value=3, + step=1, + interactive=True, + ) + index_rate1 = gr.Slider( + minimum=0, + maximum=1, + label=i18n("检索特征占比"), + value=0.75, + interactive=True, + ) + f0_file = gr.File( + label=i18n( + "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调" + ), + visible=False, + ) + + refresh_button.click( + fn=change_choices, + inputs=[], + outputs=[sid0, file_index2], + api_name="infer_refresh", + ) + # file_big_npy1 = gr.Textbox( + # label=i18n("特征文件路径"), + # value="E:\\codes\py39\\vits_vc_gpu_train\\logs\\mi-test-1key\\total_fea.npy", + # interactive=True, + # ) + with gr.Group(): + with gr.Column(): + but0 = gr.Button(i18n("转换"), variant="primary") + with gr.Row(): + vc_output1 = gr.Textbox(label=i18n("输出信息")) + vc_output2 = gr.Audio( + label=i18n("输出音频(右下角三个点,点了可以下载)") + ) + + but0.click( + vc.vc_single, + [ + spk_item, + input_audio0, + vc_transform0, + f0_file, + f0method0, + file_index1, + file_index2, + # file_big_npy1, + index_rate1, + filter_radius0, + resample_sr0, + rms_mix_rate0, + protect0, + ], + [vc_output1, vc_output2], + api_name="infer_convert", + ) + with gr.TabItem(i18n("批量推理")): + gr.Markdown( + value=i18n( + "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. " + ) + ) + with gr.Row(): + with gr.Column(): + vc_transform1 = gr.Number( + label=i18n("变调(整数, 半音数量, 升八度12降八度-12)"), + value=0, + ) + opt_input = gr.Textbox( + label=i18n("指定输出文件夹"), value="opt" + ) + file_index3 = gr.Textbox( + label=i18n("特征检索库文件路径,为空则使用下拉的选择结果"), + value="", + interactive=True, + ) + file_index4 = gr.Dropdown( + label=i18n("自动检测index路径,下拉式选择(dropdown)"), + choices=sorted(index_paths), + interactive=True, + ) + f0method1 = gr.Radio( + label=i18n( + "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU" + ), + choices=( + ["pm", "harvest", "crepe", "rmvpe"] + if config.dml == False + else ["pm", "harvest", "rmvpe"] + ), + value="rmvpe", + interactive=True, + ) + format1 = gr.Radio( + label=i18n("导出文件格式"), + choices=["wav", "flac", "mp3", "m4a"], + value="wav", + interactive=True, + ) + + refresh_button.click( + fn=lambda: change_choices()[1], + inputs=[], + outputs=file_index4, + api_name="infer_refresh_batch", + ) + # file_big_npy2 = gr.Textbox( + # label=i18n("特征文件路径"), + # value="E:\\codes\\py39\\vits_vc_gpu_train\\logs\\mi-test-1key\\total_fea.npy", + # interactive=True, + # ) + + with gr.Column(): + resample_sr1 = gr.Slider( + minimum=0, + maximum=48000, + label=i18n("后处理重采样至最终采样率,0为不进行重采样"), + value=0, + step=1, + interactive=True, + ) + rms_mix_rate1 = gr.Slider( + minimum=0, + maximum=1, + label=i18n( + "输入源音量包络替换输出音量包络融合比例,越靠近1越使用输出包络" + ), + value=1, + interactive=True, + ) + protect1 = gr.Slider( + minimum=0, + maximum=0.5, + label=i18n( + "保护清辅音和呼吸声,防止电音撕裂等artifact,拉满0.5不开启,调低加大保护力度但可能降低索引效果" + ), + value=0.33, + step=0.01, + interactive=True, + ) + filter_radius1 = gr.Slider( + minimum=0, + maximum=7, + label=i18n( + ">=3则使用对harvest音高识别的结果使用中值滤波,数值为滤波半径,使用可以削弱哑音" + ), + value=3, + step=1, + interactive=True, + ) + index_rate2 = gr.Slider( + minimum=0, + maximum=1, + label=i18n("检索特征占比"), + value=1, + interactive=True, + ) + with gr.Row(): + dir_input = gr.Textbox( + label=i18n( + "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)" + ), + placeholder="C:\\Users\\Desktop\\input_vocal_dir", + ) + inputs = gr.File( + file_count="multiple", + label=i18n("也可批量输入音频文件, 二选一, 优先读文件夹"), + ) + + with gr.Row(): + but1 = gr.Button(i18n("转换"), variant="primary") + vc_output3 = gr.Textbox(label=i18n("输出信息")) + + but1.click( + vc.vc_multi, + [ + spk_item, + dir_input, + opt_input, + inputs, + vc_transform1, + f0method1, + file_index3, + file_index4, + # file_big_npy2, + index_rate2, + filter_radius1, + resample_sr1, + rms_mix_rate1, + protect1, + format1, + ], + [vc_output3], + api_name="infer_convert_batch", + ) + sid0.change( + fn=vc.get_vc, + inputs=[sid0, protect0, protect1], + outputs=[spk_item, protect0, protect1, file_index2, file_index4], + api_name="infer_change_voice", + ) + with gr.TabItem(i18n("伴奏人声分离&去混响&去回声")): + with gr.Group(): + gr.Markdown( + value=i18n( + "人声伴奏分离批量处理, 使用UVR5模型。
合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。
模型分为三类:
1、保留人声:不带和声的音频选这个,对主人声保留比HP5更好。内置HP2和HP3两个模型,HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点;
2、仅保留主人声:带和声的音频选这个,对主人声可能有削弱。内置HP5一个模型;
3、去混响、去延迟模型(by FoxJoy):
  (1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;
 (234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底,DeReverb额外去除混响,可去除单声道混响,但是对高频重的板式混响去不干净。
去混响/去延迟,附:
1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍;
2、MDX-Net-Dereverb模型挺慢的;
3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。" + ) + ) + with gr.Row(): + with gr.Column(): + dir_wav_input = gr.Textbox( + label=i18n("输入待处理音频文件夹路径"), + placeholder="C:\\Users\\Desktop\\todo-songs", + ) + wav_inputs = gr.File( + file_count="multiple", + label=i18n("也可批量输入音频文件, 二选一, 优先读文件夹"), + ) + with gr.Column(): + model_choose = gr.Dropdown( + label=i18n("模型"), choices=uvr5_names + ) + agg = gr.Slider( + minimum=0, + maximum=20, + step=1, + label="人声提取激进程度", + value=10, + interactive=True, + visible=False, # 先不开放调整 + ) + opt_vocal_root = gr.Textbox( + label=i18n("指定输出主人声文件夹"), value="opt" + ) + opt_ins_root = gr.Textbox( + label=i18n("指定输出非主人声文件夹"), value="opt" + ) + format0 = gr.Radio( + label=i18n("导出文件格式"), + choices=["wav", "flac", "mp3", "m4a"], + value="flac", + interactive=True, + ) + but2 = gr.Button(i18n("转换"), variant="primary") + vc_output4 = gr.Textbox(label=i18n("输出信息")) + but2.click( + uvr, + [ + model_choose, + dir_wav_input, + opt_vocal_root, + wav_inputs, + opt_ins_root, + agg, + format0, + ], + [vc_output4], + api_name="uvr_convert", + ) + with gr.TabItem(i18n("训练")): + gr.Markdown( + value=i18n( + "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. " + ) + ) + with gr.Row(): + exp_dir1 = gr.Textbox(label=i18n("输入实验名"), value="mi-test") + sr2 = gr.Radio( + label=i18n("目标采样率"), + choices=["40k", "48k"], + value="40k", + interactive=True, + ) + if_f0_3 = gr.Radio( + label=i18n("模型是否带音高指导(唱歌一定要, 语音可以不要)"), + choices=[True, False], + value=True, + interactive=True, + ) + version19 = gr.Radio( + label=i18n("版本"), + choices=["v1", "v2"], + value="v2", + interactive=True, + visible=True, + ) + np7 = gr.Slider( + minimum=0, + maximum=config.n_cpu, + step=1, + label=i18n("提取音高和处理数据使用的CPU进程数"), + value=int(np.ceil(config.n_cpu / 1.5)), + interactive=True, + ) + with gr.Group(): # 暂时单人的, 后面支持最多4人的#数据处理 + gr.Markdown( + value=i18n( + "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. " + ) + ) + with gr.Row(): + trainset_dir4 = gr.Textbox( + label=i18n("输入训练文件夹路径"), + value=i18n("E:\\语音音频+标注\\米津玄师\\src"), + ) + spk_id5 = gr.Slider( + minimum=0, + maximum=4, + step=1, + label=i18n("请指定说话人id"), + value=0, + interactive=True, + ) + but1 = gr.Button(i18n("处理数据"), variant="primary") + info1 = gr.Textbox(label=i18n("输出信息"), value="") + but1.click( + preprocess_dataset, + [trainset_dir4, exp_dir1, sr2, np7], + [info1], + api_name="train_preprocess", + ) + with gr.Group(): + gr.Markdown( + value=i18n( + "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)" + ) + ) + with gr.Row(): + with gr.Column(): + gpus6 = gr.Textbox( + label=i18n( + "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2" + ), + value=gpus, + interactive=True, + visible=F0GPUVisible, + ) + gpu_info9 = gr.Textbox( + label=i18n("显卡信息"), value=gpu_info, visible=F0GPUVisible + ) + with gr.Column(): + f0method8 = gr.Radio( + label=i18n( + "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU" + ), + choices=["pm", "harvest", "dio", "rmvpe", "rmvpe_gpu"], + value="rmvpe_gpu", + interactive=True, + ) + gpus_rmvpe = gr.Textbox( + label=i18n( + "rmvpe卡号配置:以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程" + ), + value="%s-%s" % (gpus, gpus), + interactive=True, + visible=F0GPUVisible, + ) + but2 = gr.Button(i18n("特征提取"), variant="primary") + info2 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=8) + f0method8.change( + fn=change_f0_method, + inputs=[f0method8], + outputs=[gpus_rmvpe], + ) + but2.click( + extract_f0_feature, + [ + gpus6, + np7, + f0method8, + if_f0_3, + exp_dir1, + version19, + gpus_rmvpe, + ], + [info2], + api_name="train_extract_f0_feature", + ) + with gr.Group(): + gr.Markdown(value=i18n("step3: 填写训练设置, 开始训练模型和索引")) + with gr.Row(): + save_epoch10 = gr.Slider( + minimum=1, + maximum=50, + step=1, + label=i18n("保存频率save_every_epoch"), + value=5, + interactive=True, + ) + total_epoch11 = gr.Slider( + minimum=2, + maximum=1000, + step=1, + label=i18n("总训练轮数total_epoch"), + value=20, + interactive=True, + ) + batch_size12 = gr.Slider( + minimum=1, + maximum=40, + step=1, + label=i18n("每张显卡的batch_size"), + value=default_batch_size, + interactive=True, + ) + if_save_latest13 = gr.Radio( + label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), + choices=[i18n("是"), i18n("否")], + value=i18n("否"), + interactive=True, + ) + if_cache_gpu17 = gr.Radio( + label=i18n( + "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速" + ), + choices=[i18n("是"), i18n("否")], + value=i18n("否"), + interactive=True, + ) + if_save_every_weights18 = gr.Radio( + label=i18n( + "是否在每次保存时间点将最终小模型保存至weights文件夹" + ), + choices=[i18n("是"), i18n("否")], + value=i18n("否"), + interactive=True, + ) + with gr.Row(): + pretrained_G14 = gr.Textbox( + label=i18n("加载预训练底模G路径"), + value="assets/pretrained_v2/f0G40k.pth", + interactive=True, + ) + pretrained_D15 = gr.Textbox( + label=i18n("加载预训练底模D路径"), + value="assets/pretrained_v2/f0D40k.pth", + interactive=True, + ) + sr2.change( + change_sr2, + [sr2, if_f0_3, version19], + [pretrained_G14, pretrained_D15], + ) + version19.change( + change_version19, + [sr2, if_f0_3, version19], + [pretrained_G14, pretrained_D15, sr2], + ) + if_f0_3.change( + change_f0, + [if_f0_3, sr2, version19], + [f0method8, gpus_rmvpe, pretrained_G14, pretrained_D15], + ) + gpus16 = gr.Textbox( + label=i18n( + "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2" + ), + value=gpus, + interactive=True, + ) + but3 = gr.Button(i18n("训练模型"), variant="primary") + but4 = gr.Button(i18n("训练特征索引"), variant="primary") + but5 = gr.Button(i18n("一键训练"), variant="primary") + info3 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=10) + but3.click( + click_train, + [ + exp_dir1, + sr2, + if_f0_3, + spk_id5, + save_epoch10, + total_epoch11, + batch_size12, + if_save_latest13, + pretrained_G14, + pretrained_D15, + gpus16, + if_cache_gpu17, + if_save_every_weights18, + version19, + ], + info3, + api_name="train_start", + ) + but4.click(train_index, [exp_dir1, version19], info3) + but5.click( + train1key, + [ + exp_dir1, + sr2, + if_f0_3, + trainset_dir4, + spk_id5, + np7, + f0method8, + save_epoch10, + total_epoch11, + batch_size12, + if_save_latest13, + pretrained_G14, + pretrained_D15, + gpus16, + if_cache_gpu17, + if_save_every_weights18, + version19, + gpus_rmvpe, + ], + info3, + api_name="train_start_all", + ) + + with gr.TabItem(i18n("ckpt处理")): + with gr.Group(): + gr.Markdown(value=i18n("模型融合, 可用于测试音色融合")) + with gr.Row(): + ckpt_a = gr.Textbox( + label=i18n("A模型路径"), value="", interactive=True + ) + ckpt_b = gr.Textbox( + label=i18n("B模型路径"), value="", interactive=True + ) + alpha_a = gr.Slider( + minimum=0, + maximum=1, + label=i18n("A模型权重"), + value=0.5, + interactive=True, + ) + with gr.Row(): + sr_ = gr.Radio( + label=i18n("目标采样率"), + choices=["40k", "48k"], + value="40k", + interactive=True, + ) + if_f0_ = gr.Radio( + label=i18n("模型是否带音高指导"), + choices=[i18n("是"), i18n("否")], + value=i18n("是"), + interactive=True, + ) + info__ = gr.Textbox( + label=i18n("要置入的模型信息"), + value="", + max_lines=8, + interactive=True, + ) + name_to_save0 = gr.Textbox( + label=i18n("保存的模型名不带后缀"), + value="", + max_lines=1, + interactive=True, + ) + version_2 = gr.Radio( + label=i18n("模型版本型号"), + choices=["v1", "v2"], + value="v1", + interactive=True, + ) + with gr.Row(): + but6 = gr.Button(i18n("融合"), variant="primary") + info4 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=8) + but6.click( + merge, + [ + ckpt_a, + ckpt_b, + alpha_a, + sr_, + if_f0_, + info__, + name_to_save0, + version_2, + ], + info4, + api_name="ckpt_merge", + ) # def merge(path1,path2,alpha1,sr,f0,info): + with gr.Group(): + gr.Markdown( + value=i18n("修改模型信息(仅支持weights文件夹下提取的小模型文件)") + ) + with gr.Row(): + ckpt_path0 = gr.Textbox( + label=i18n("模型路径"), value="", interactive=True + ) + info_ = gr.Textbox( + label=i18n("要改的模型信息"), + value="", + max_lines=8, + interactive=True, + ) + name_to_save1 = gr.Textbox( + label=i18n("保存的文件名, 默认空为和源文件同名"), + value="", + max_lines=8, + interactive=True, + ) + with gr.Row(): + but7 = gr.Button(i18n("修改"), variant="primary") + info5 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=8) + but7.click( + change_info, + [ckpt_path0, info_, name_to_save1], + info5, + api_name="ckpt_modify", + ) + with gr.Group(): + gr.Markdown( + value=i18n("查看模型信息(仅支持weights文件夹下提取的小模型文件)") + ) + with gr.Row(): + ckpt_path1 = gr.Textbox( + label=i18n("模型路径"), value="", interactive=True + ) + but8 = gr.Button(i18n("查看"), variant="primary") + info6 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=8) + but8.click(show_info, [ckpt_path1], info6, api_name="ckpt_show") + with gr.Group(): + gr.Markdown( + value=i18n( + "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况" + ) + ) + with gr.Row(): + ckpt_path2 = gr.Textbox( + label=i18n("模型路径"), + value="E:\\codes\\py39\\logs\\mi-test_f0_48k\\G_23333.pth", + interactive=True, + ) + save_name = gr.Textbox( + label=i18n("保存名"), value="", interactive=True + ) + sr__ = gr.Radio( + label=i18n("目标采样率"), + choices=["32k", "40k", "48k"], + value="40k", + interactive=True, + ) + if_f0__ = gr.Radio( + label=i18n("模型是否带音高指导,1是0否"), + choices=["1", "0"], + value="1", + interactive=True, + ) + version_1 = gr.Radio( + label=i18n("模型版本型号"), + choices=["v1", "v2"], + value="v2", + interactive=True, + ) + info___ = gr.Textbox( + label=i18n("要置入的模型信息"), + value="", + max_lines=8, + interactive=True, + ) + but9 = gr.Button(i18n("提取"), variant="primary") + info7 = gr.Textbox(label=i18n("输出信息"), value="", max_lines=8) + ckpt_path2.change( + change_info_, [ckpt_path2], [sr__, if_f0__, version_1] + ) + but9.click( + extract_small_model, + [ckpt_path2, save_name, sr__, if_f0__, info___, version_1], + info7, + api_name="ckpt_extract", + ) + + with gr.TabItem(i18n("Onnx导出")): + with gr.Row(): + ckpt_dir = gr.Textbox( + label=i18n("RVC模型路径"), value="", interactive=True + ) + with gr.Row(): + onnx_dir = gr.Textbox( + label=i18n("Onnx输出路径"), value="", interactive=True + ) + with gr.Row(): + infoOnnx = gr.Label(label="info") + with gr.Row(): + butOnnx = gr.Button(i18n("导出Onnx模型"), variant="primary") + butOnnx.click( + export_onnx, [ckpt_dir, onnx_dir], infoOnnx, api_name="export_onnx" + ) + + tab_faq = i18n("常见问题解答") + with gr.TabItem(tab_faq): + try: + if tab_faq == "常见问题解答": + with open("docs/cn/faq.md", "r", encoding="utf8") as f: + info = f.read() + else: + with open("docs/en/faq_en.md", "r", encoding="utf8") as f: + info = f.read() + gr.Markdown(value=info) + except: + gr.Markdown(traceback.format_exc()) + + if config.iscolab: + app.queue(concurrency_count=511, max_size=1022).launch(share=True) + else: + app.queue(concurrency_count=511, max_size=1022).launch( + server_name="0.0.0.0", + inbrowser=not config.noautoopen, + server_port=config.listen_port, + quiet=True, + ) \ No newline at end of file diff --git a/infer/lib/train/utils.py b/infer/lib/train/utils.py index 765c54c61..8184ca004 100644 --- a/infer/lib/train/utils.py +++ b/infer/lib/train/utils.py @@ -235,8 +235,9 @@ def plot_spectrogram_to_numpy(spectrogram): plt.tight_layout() fig.canvas.draw() - data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep="") - data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,)) + # Fix for newer matplotlib versions + buf = fig.canvas.buffer_rgba() + data = np.asarray(buf)[:, :, :3] plt.close() return data @@ -266,8 +267,9 @@ def plot_alignment_to_numpy(alignment, info=None): plt.tight_layout() fig.canvas.draw() - data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep="") - data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,)) + # Fix for newer matplotlib versions + buf = fig.canvas.buffer_rgba() + data = np.asarray(buf)[:, :, :3] plt.close() return data diff --git a/infer/modules/train/extract_feature_print.py b/infer/modules/train/extract_feature_print.py index 96a69dee4..1f9d725b9 100644 --- a/infer/modules/train/extract_feature_print.py +++ b/infer/modules/train/extract_feature_print.py @@ -86,6 +86,15 @@ def readwave(wav_path, normalize=False): % model_path ) exit(0) + +# Fix for PyTorch 2.6+ weights_only default change +import torch.serialization +try: + import fairseq.data.dictionary + torch.serialization.add_safe_globals([fairseq.data.dictionary.Dictionary]) +except: + pass + models, saved_cfg, task = fairseq.checkpoint_utils.load_model_ensemble_and_task( [model_path], suffix="", diff --git a/infer/modules/train/train.py b/infer/modules/train/train.py index 38a567828..aefdd0349 100644 --- a/infer/modules/train/train.py +++ b/infer/modules/train/train.py @@ -18,6 +18,22 @@ import torch +# Device detection for MPS (Apple Silicon), CUDA, or CPU +USE_MPS = False +USE_CUDA = False +DEVICE = "cpu" + +if torch.backends.mps.is_available(): + USE_MPS = True + DEVICE = "mps" + print("Using Apple Silicon MPS GPU acceleration") +elif torch.cuda.is_available(): + USE_CUDA = True + DEVICE = "cuda" + print("Using NVIDIA CUDA GPU acceleration") +else: + print("No GPU detected, using CPU") + try: import intel_extension_for_pytorch as ipex # pylint: disable=import-error, unused-import @@ -79,6 +95,15 @@ global_step = 0 +def to_device(tensor, rank=0): + """Move tensor to appropriate device (MPS, CUDA, or CPU)""" + if USE_MPS: + return tensor.to("mps") + elif USE_CUDA: + return tensor.cuda(rank, non_blocking=True) + return tensor + + class EpochRecorder: def __init__(self): self.last_time = ttime() @@ -167,7 +192,7 @@ def run(rank, n_gpus, hps, logger: logging.Logger): hps.data.filter_length // 2 + 1, hps.train.segment_size // hps.data.hop_length, **hps.model, - is_half=hps.train.fp16_run, + is_half=hps.train.fp16_run and not USE_MPS, # MPS doesn't support fp16 well sr=hps.sample_rate, ) else: @@ -175,12 +200,17 @@ def run(rank, n_gpus, hps, logger: logging.Logger): hps.data.filter_length // 2 + 1, hps.train.segment_size // hps.data.hop_length, **hps.model, - is_half=hps.train.fp16_run, + is_half=hps.train.fp16_run and not USE_MPS, ) - if torch.cuda.is_available(): + # Move models to device + if USE_MPS: + net_g = net_g.to("mps") + elif USE_CUDA: net_g = net_g.cuda(rank) net_d = MultiPeriodDiscriminator(hps.model.use_spectral_norm) - if torch.cuda.is_available(): + if USE_MPS: + net_d = net_d.to("mps") + elif USE_CUDA: net_d = net_d.cuda(rank) optim_g = torch.optim.AdamW( net_g.parameters(), @@ -194,16 +224,16 @@ def run(rank, n_gpus, hps, logger: logging.Logger): betas=hps.train.betas, eps=hps.train.eps, ) - # net_g = DDP(net_g, device_ids=[rank], find_unused_parameters=True) - # net_d = DDP(net_d, device_ids=[rank], find_unused_parameters=True) + # DDP wrapping (not used for MPS single-GPU) if hasattr(torch, "xpu") and torch.xpu.is_available(): pass - elif torch.cuda.is_available(): + elif USE_CUDA: net_g = DDP(net_g, device_ids=[rank]) net_d = DDP(net_d, device_ids=[rank]) - else: + elif not USE_MPS: net_g = DDP(net_g) net_d = DDP(net_d) + # MPS: no DDP needed for single GPU try: # 如果能加载自动resume _, _, _, epoch_str = utils.load_checkpoint( @@ -260,7 +290,8 @@ def run(rank, n_gpus, hps, logger: logging.Logger): optim_d, gamma=hps.train.lr_decay, last_epoch=epoch_str - 2 ) - scaler = GradScaler(enabled=hps.train.fp16_run) + # MPS doesn't support fp16 GradScaler well + scaler = GradScaler(enabled=hps.train.fp16_run and not USE_MPS) cache = [] for epoch in range(epoch_str, hps.train.epochs + 1): @@ -341,18 +372,18 @@ def train_and_evaluate( wave_lengths, sid, ) = info - # Load on CUDA - if torch.cuda.is_available(): - phone = phone.cuda(rank, non_blocking=True) - phone_lengths = phone_lengths.cuda(rank, non_blocking=True) + # Load on GPU (CUDA or MPS) + if USE_CUDA or USE_MPS: + phone = to_device(phone, rank) + phone_lengths = to_device(phone_lengths, rank) if hps.if_f0 == 1: - pitch = pitch.cuda(rank, non_blocking=True) - pitchf = pitchf.cuda(rank, non_blocking=True) - sid = sid.cuda(rank, non_blocking=True) - spec = spec.cuda(rank, non_blocking=True) - spec_lengths = spec_lengths.cuda(rank, non_blocking=True) - wave = wave.cuda(rank, non_blocking=True) - wave_lengths = wave_lengths.cuda(rank, non_blocking=True) + pitch = to_device(pitch, rank) + pitchf = to_device(pitchf, rank) + sid = to_device(sid, rank) + spec = to_device(spec, rank) + spec_lengths = to_device(spec_lengths, rank) + wave = to_device(wave, rank) + wave_lengths = to_device(wave_lengths, rank) # Cache on list if hps.if_f0 == 1: cache.append( @@ -412,21 +443,20 @@ def train_and_evaluate( ) = info else: phone, phone_lengths, spec, spec_lengths, wave, wave_lengths, sid = info - ## Load on CUDA - if (hps.if_cache_data_in_gpu == False) and torch.cuda.is_available(): - phone = phone.cuda(rank, non_blocking=True) - phone_lengths = phone_lengths.cuda(rank, non_blocking=True) + ## Load on GPU (CUDA or MPS) + if (hps.if_cache_data_in_gpu == False) and (USE_CUDA or USE_MPS): + phone = to_device(phone, rank) + phone_lengths = to_device(phone_lengths, rank) if hps.if_f0 == 1: - pitch = pitch.cuda(rank, non_blocking=True) - pitchf = pitchf.cuda(rank, non_blocking=True) - sid = sid.cuda(rank, non_blocking=True) - spec = spec.cuda(rank, non_blocking=True) - spec_lengths = spec_lengths.cuda(rank, non_blocking=True) - wave = wave.cuda(rank, non_blocking=True) - # wave_lengths = wave_lengths.cuda(rank, non_blocking=True) + pitch = to_device(pitch, rank) + pitchf = to_device(pitchf, rank) + sid = to_device(sid, rank) + spec = to_device(spec, rank) + spec_lengths = to_device(spec_lengths, rank) + wave = to_device(wave, rank) # Calculate - with autocast(enabled=hps.train.fp16_run): + with autocast(enabled=hps.train.fp16_run and not USE_MPS): if hps.if_f0 == 1: ( y_hat, diff --git a/infer/modules/vc/utils.py b/infer/modules/vc/utils.py index c128707cf..1e4afde83 100644 --- a/infer/modules/vc/utils.py +++ b/infer/modules/vc/utils.py @@ -1,7 +1,17 @@ import os +import torch from fairseq import checkpoint_utils +# PyTorch 2.6+ compatibility: weights_only=True by default breaks fairseq loading +# Monkey-patch torch.load to use weights_only=False for model loading +_original_torch_load = torch.load +def _patched_torch_load(*args, **kwargs): + if 'weights_only' not in kwargs: + kwargs['weights_only'] = False + return _original_torch_load(*args, **kwargs) +torch.load = _patched_torch_load + def get_index_path_from_model(sid): return next( diff --git a/inference_log.txt b/inference_log.txt new file mode 100644 index 000000000..2b53e1c21 --- /dev/null +++ b/inference_log.txt @@ -0,0 +1,24 @@ +/opt/anaconda3/envs/rvc/lib/python3.10/site-packages/pyworld/__init__.py:13: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources +2025-12-08 01:10:34 | INFO | configs.config | No supported Nvidia GPU found +2025-12-08 01:10:34 | INFO | configs.config | MPS available but using CPU for stability +2025-12-08 01:10:34 | INFO | configs.config | overwrite v1/32k.json +2025-12-08 01:10:34 | INFO | configs.config | overwrite v1/40k.json +2025-12-08 01:10:34 | INFO | configs.config | overwrite v1/48k.json +2025-12-08 01:10:34 | INFO | configs.config | overwrite v2/48k.json +2025-12-08 01:10:34 | INFO | configs.config | overwrite v2/32k.json +2025-12-08 01:10:34 | INFO | configs.config | overwrite preprocess_per to 3 +2025-12-08 01:10:34 | INFO | configs.config | Use cpu instead +2025-12-08 01:10:34 | INFO | configs.config | Half-precision floating-point: False, device: cpu +2025-12-08 01:10:34 | INFO | infer.modules.vc.modules | Get sid: Voice_New.pth +2025-12-08 01:10:34 | INFO | infer.modules.vc.modules | Loading: assets/weights/Voice_New.pth +/opt/anaconda3/envs/rvc/lib/python3.10/site-packages/torch/nn/utils/weight_norm.py:144: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`. + WeightNorm.apply(module, name, dim) +2025-12-08 01:10:34 | INFO | infer.modules.vc.modules | Select index: logs/Voice_New/added_IVF86_Flat_nprobe_1.index +2025-12-08 01:10:34 | INFO | fairseq.tasks.hubert_pretraining | current directory is /Users/arunkumarv/Music/Voice Clone/rvc-webui +2025-12-08 01:10:34 | INFO | fairseq.tasks.hubert_pretraining | HubertPretrainingTask Config {'_name': 'hubert_pretraining', 'data': 'metadata', 'fine_tuning': False, 'labels': ['km'], 'label_dir': 'label', 'label_rate': 50.0, 'sample_rate': 16000, 'normalize': False, 'enable_padding': False, 'max_keep_size': None, 'max_sample_size': 250000, 'min_sample_size': 32000, 'single_target': False, 'random_crop': True, 'pad_audio': False} +2025-12-08 01:10:34 | INFO | fairseq.models.hubert.hubert | HubertModel Config: {'_name': 'hubert', 'label_rate': 50.0, 'extractor_mode': default, 'encoder_layers': 12, 'encoder_embed_dim': 768, 'encoder_ffn_embed_dim': 3072, 'encoder_attention_heads': 12, 'activation_fn': gelu, 'layer_type': transformer, 'dropout': 0.1, 'attention_dropout': 0.1, 'activation_dropout': 0.0, 'encoder_layerdrop': 0.05, 'dropout_input': 0.1, 'dropout_features': 0.1, 'final_dim': 256, 'untie_final_proj': True, 'layer_norm_first': False, 'conv_feature_layers': '[(512,10,5)] + [(512,3,2)] * 4 + [(512,2,2)] * 2', 'conv_bias': False, 'logit_temp': 0.1, 'target_glu': False, 'feature_grad_mult': 0.1, 'mask_length': 10, 'mask_prob': 0.8, 'mask_selection': static, 'mask_other': 0.0, 'no_mask_overlap': False, 'mask_min_space': 1, 'mask_channel_length': 10, 'mask_channel_prob': 0.0, 'mask_channel_selection': static, 'mask_channel_other': 0.0, 'no_mask_channel_overlap': False, 'mask_channel_min_space': 1, 'conv_pos': 128, 'conv_pos_groups': 16, 'latent_temp': [2.0, 0.5, 0.999995], 'skip_masked': False, 'skip_nomask': False, 'checkpoint_activations': False, 'required_seq_len_multiple': 2, 'depthwise_conv_kernel_size': 31, 'attn_type': '', 'pos_enc_type': 'abs', 'fp16': False} +/opt/anaconda3/envs/rvc/lib/python3.10/site-packages/torch/nn/utils/weight_norm.py:144: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`. + WeightNorm.apply(module, name, dim) +/opt/anaconda3/envs/rvc/lib/python3.10/multiprocessing/resource_tracker.py:224: UserWarning: resource_tracker: There appear to be 1 leaked semaphore objects to clean up at shutdown + warnings.warn('resource_tracker: There appear to be %d ' diff --git a/run_inference.py b/run_inference.py new file mode 100644 index 000000000..f77debf23 --- /dev/null +++ b/run_inference.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +import os +import sys + +os.environ['OMP_NUM_THREADS'] = '1' +os.environ['MKL_NUM_THREADS'] = '1' +os.environ['OPENBLAS_NUM_THREADS'] = '1' +os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE' + +import torch +import faiss +faiss.omp_set_num_threads(1) + +now_dir = os.getcwd() +sys.path.append(now_dir) + +from dotenv import load_dotenv +load_dotenv() + +os.environ['weight_root'] = 'assets/weights' +os.environ['index_root'] = 'logs' +os.environ['rmvpe_root'] = 'assets/rmvpe' + +print(f"PyTorch version: {torch.__version__}") +print(f"CUDA available: {torch.cuda.is_available()}") +print(f"MPS available: {torch.backends.mps.is_available() if hasattr(torch.backends, 'mps') else False}") + +from configs.config import Config +config = Config() +print(f"Device selected by config: {config.device}") + +from infer.modules.vc.modules import VC +vc_instance = VC(config) + +model_name = "Voice_New.pth" +input_audio = "/Users/arunkumarv/Music/Voice Clone/Voice_convert.mp3" +output_audio = "/Users/arunkumarv/Music/Voice Clone/rvc-webui/output/Voice_New/converted.wav" + +os.makedirs(os.path.dirname(output_audio), exist_ok=True) + +print(f"\nLoading model: {model_name}") +vc_instance.get_vc(model_name) + +print(f"Converting audio: {input_audio}") +print(f"Output will be saved to: {output_audio}") + +print("Starting vc_single...") +sys.stdout.flush() + +import soundfile as sf + +try: + result_message, audio_result = vc_instance.vc_single( + sid=0, + input_audio_path=input_audio, + f0_up_key=0, + f0_file=None, + f0_method="rmvpe", + file_index=f"logs/Voice_New/added_IVF86_Flat_nprobe_1.index", + file_index2="", + index_rate=0.75, + filter_radius=3, + resample_sr=0, + rms_mix_rate=0.25, + protect=0.33 + ) + + print(f"\nResult: {result_message}") + + sample_rate, audio_data = audio_result + if audio_data is not None and sample_rate is not None: + sf.write(output_audio, audio_data, sample_rate) + print(f"✓ Audio saved successfully to: {output_audio}") + else: + print("✗ Conversion failed!") + sys.exit(1) +except Exception as e: + import traceback + print(f"Error: {e}") + traceback.print_exc() + sys.exit(1) diff --git a/run_inference_api.py b/run_inference_api.py new file mode 100644 index 000000000..e1fcfc7ad --- /dev/null +++ b/run_inference_api.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +from gradio_client import Client +import os + +client = Client("http://localhost:7865") + +input_audio = "/Users/arunkumarv/Music/Voice Clone/Voice_convert.mp3" +output_dir = "/Users/arunkumarv/Music/Voice Clone/rvc-webui/output/Voice_New" +os.makedirs(output_dir, exist_ok=True) + +print(f"Submitting inference request...") +print(f"Input: {input_audio}") +print(f"Model: Voice_New.pth") +print(f"F0 Method: pm") + +result = client.predict( + spk_item="Voice_New.pth", + input_audio0=input_audio, + vc_transform0=0, # pitch shift + f0_file=None, + f0method0="pm", # F0 method + file_index1="", # manual index path + file_index2="logs/Voice_New/added_IVF86_Flat_nprobe_1.index", # dropdown selection + index_rate1=0.75, # retrieval mix + filter_radius0=3, # median filter + resample_sr0=0, # output sample rate + rms_mix_rate0=0.25, # volume envelope + protect0=0.33, # consonant protection + api_name="/infer_convert" +) + +output_message, output_audio_tuple = result +print(f"\nResult: {output_message}") + +if output_audio_tuple and len(output_audio_tuple) > 1: + output_path = os.path.join(output_dir, "converted.wav") + # Gradio returns the audio file path + if isinstance(output_audio_tuple, tuple) and len(output_audio_tuple) == 2: + sr, audio_file = output_audio_tuple + print(f"✓ Audio converted successfully!") + print(f"Sample rate: {sr} Hz") + print(f"Output: {output_path}") + else: + print(f"Unexpected output format: {output_audio_tuple}") +else: + print("✗ Conversion failed!") diff --git a/setup-doc.md b/setup-doc.md new file mode 100644 index 000000000..153f17980 --- /dev/null +++ b/setup-doc.md @@ -0,0 +1,67 @@ +# RVC WebUI Setup Documentation + +## Environment + +- macOS (Apple Silicon) +- Python 3.10 (Conda) +- PyTorch with MPS support + +## Problems and Solutions + +### 1. fairseq Installation Failure + +**Error**: `omegaconf` metadata parsing error with pip 25.x + +**Fix**: +```bash +pip install "pip<24.1" +pip install fairseq==0.12.2 +``` + +### 2. Gradio Version Mismatch + +**Error**: `concurrency_count` parameter not recognized (wrong gradio version installed) + +**Fix**: +```bash +pip install gradio==3.34.0 +``` + +### 3. gradio_client.serializing Module Not Found + +**Error**: `ModuleNotFoundError: No module named 'gradio_client.serializing'` + +**Cause**: Modern gradio-client (2.x) removed the serializing module that gradio 3.34.0 expects + +**Fix**: +```bash +pip install gradio-client==0.2.7 +``` + +## Working Installation Sequence + +```bash +conda create -n rvc python=3.10 -y +conda activate rvc + +pip install "pip<24.1" +pip install torch torchvision torchaudio +pip install -r requirements.txt +pip install fairseq==0.12.2 +pip install gradio==3.34.0 +pip install gradio-client==0.2.7 + +python tools/download_models.py +python infer-web.py +``` + +## Verification + +```bash +python -c "import torch; print(torch.backends.mps.is_available())" +python -c "from gradio_client.serializing import Serializable; print('OK')" +``` + +## Access + +WebUI runs at: http://localhost:7865 diff --git a/temp_download_dialects.py b/temp_download_dialects.py new file mode 100644 index 000000000..c93b14491 --- /dev/null +++ b/temp_download_dialects.py @@ -0,0 +1,33 @@ + +import os +from datasets import load_dataset +from pathlib import Path +import soundfile as sf + +print("Loading English Dialects dataset...") +ds = load_dataset("ylacombe/english_dialects", split="train", streaming=True) + +datasets_dir = Path("datasets/accent_non_native") +datasets_dir.mkdir(parents=True, exist_ok=True) + +count = 0 +max_samples = 150 + +# Target dialects for "non-native" feel (regional accents) +target_dialects = ["scottish", "irish", "welsh", "northern"] + +for sample in ds: + dialect = sample.get("dialect", "").lower() + + if any(d in dialect for d in target_dialects) and count < max_samples: + audio = sample["audio"] + out_path = datasets_dir / f"{dialect}_{count}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + count += 1 + print(f"Saved {out_path.name} (total: {count})") + + if count >= max_samples: + break + +print(f"Downloaded {count} dialect samples") diff --git a/temp_download_genshin.py b/temp_download_genshin.py new file mode 100644 index 000000000..27e2e38eb --- /dev/null +++ b/temp_download_genshin.py @@ -0,0 +1,38 @@ + +import os +from datasets import load_dataset +from pathlib import Path +import soundfile as sf + +print("Loading Genshin Voice dataset...") +ds = load_dataset("simon3000/genshin-voice", split="train", streaming=True) + +datasets_dir = Path("datasets/anime_airy") +datasets_dir.mkdir(parents=True, exist_ok=True) + +count = 0 +max_samples = 150 + +# Target characters with airy/cute voices (English) +target_chars = ["paimon", "barbara", "kokomi", "nahida", "klee", "qiqi", "diona"] + +for sample in ds: + speaker = str(sample.get("speaker", "")).lower() + lang = sample.get("language", "") + + # Only English samples + if lang != "en": + continue + + if any(char in speaker for char in target_chars) and count < max_samples: + audio = sample["audio"] + out_path = datasets_dir / f"{speaker.replace(' ', '_')}_{count}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + count += 1 + print(f"Saved {out_path.name} (total: {count})") + + if count >= max_samples: + break + +print(f"Downloaded {count} anime voice samples") diff --git a/temp_download_hifi.py b/temp_download_hifi.py new file mode 100644 index 000000000..7724e5af6 --- /dev/null +++ b/temp_download_hifi.py @@ -0,0 +1,46 @@ + +import os +from datasets import load_dataset +from pathlib import Path +import soundfile as sf + +print("Loading Hi-Fi TTS dataset...") +ds = load_dataset("MikhailT/hifi-tts", split="train", streaming=True) + +datasets_dir = Path("datasets") + +# Speaker ID to voice type mapping for HiFi-TTS +# HiFi has 10 speakers total +voice_map = { + "92": "male_low", # Deep male + "6097": "male_mid", # Mid male + "6670": "female_low", # Lower female + "6671": "female_high", # Higher female + "8051": "singing_male", + "9017": "singing_female", +} + +counts = {k: 0 for k in set(voice_map.values())} +max_per_type = 100 + +for sample in ds: + speaker = str(sample.get("speaker", "")) + + if speaker in voice_map: + voice_type = voice_map[speaker] + + if counts[voice_type] < max_per_type: + out_dir = datasets_dir / voice_type + out_dir.mkdir(parents=True, exist_ok=True) + + audio = sample["audio"] + out_path = out_dir / f"hifi_{speaker}_{counts[voice_type]}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + counts[voice_type] += 1 + print(f"Saved {out_path.name} ({voice_type}: {counts[voice_type]})") + + if all(c >= max_per_type for c in counts.values()): + break + +print(f"Final counts: {counts}") diff --git a/temp_download_libritts.py b/temp_download_libritts.py new file mode 100644 index 000000000..b8d7dd48f --- /dev/null +++ b/temp_download_libritts.py @@ -0,0 +1,45 @@ + +import os +from datasets import load_dataset +from pathlib import Path + +print("Loading LibriTTS dataset (this may take a while)...") +ds = load_dataset("mythicinfinity/libritts", "clean", split="train.clean.100", streaming=True) + +# Sample speakers - take first 50 samples per target voice type +# LibriTTS speaker IDs are in the 'speaker_id' column +target_speakers = { + "male_low": ["19", "26", "1272"], # Deep male voices + "male_mid": ["32", "40", "1089"], # Mid-range male + "female_low": ["87", "103", "1284"], # Lower female + "female_high": ["121", "237", "3570"], # Higher female +} + +datasets_dir = Path("datasets") +counts = {k: 0 for k in target_speakers} +max_per_type = 100 # Max samples per voice type + +for sample in ds: + speaker = str(sample.get("speaker_id", "")) + + for voice_type, speakers in target_speakers.items(): + if speaker in speakers and counts[voice_type] < max_per_type: + out_dir = datasets_dir / voice_type + out_dir.mkdir(parents=True, exist_ok=True) + + audio = sample["audio"] + out_path = out_dir / f"{speaker}_{sample['id']}.wav" + + # Save audio + import soundfile as sf + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + + counts[voice_type] += 1 + print(f"Saved {out_path.name} ({voice_type}: {counts[voice_type]})") + + # Check if we have enough + if all(c >= max_per_type for c in counts.values()): + print("Collected enough samples!") + break + +print(f"Final counts: {counts}") diff --git a/tools/audio_preprocessor.py b/tools/audio_preprocessor.py new file mode 100644 index 000000000..7e564169a --- /dev/null +++ b/tools/audio_preprocessor.py @@ -0,0 +1,81 @@ +import os +import argparse +import librosa +import soundfile as sf +import numpy as np +from pydub import AudioSegment +from pydub.silence import split_on_silence +from tqdm import tqdm + +def process_audio(input_path, output_dir, sr=40000, min_silence_len=500, silence_thresh=-40, chunk_len=10000): + """ + Process audio file: convert to wav, normalize, remove silence, split into chunks + """ + filename = os.path.basename(input_path).split('.')[0] + + print(f"Processing {input_path}...") + + # Load audio + try: + audio = AudioSegment.from_file(input_path) + except Exception as e: + print(f"Error loading {input_path}: {e}") + return + + # Normalize + audio = audio.normalize() + + # Split on silence + chunks = split_on_silence( + audio, + min_silence_len=min_silence_len, + silence_thresh=silence_thresh, + keep_silence=100 + ) + + # Combine small chunks to reach target length + output_chunks = [] + current_chunk = AudioSegment.empty() + + for chunk in chunks: + if len(current_chunk) + len(chunk) < chunk_len: + current_chunk += chunk + else: + output_chunks.append(current_chunk) + current_chunk = chunk + + if len(current_chunk) > 0: + output_chunks.append(current_chunk) + + # Save chunks + os.makedirs(output_dir, exist_ok=True) + + for i, chunk in enumerate(output_chunks): + # Convert to target sample rate + chunk = chunk.set_frame_rate(sr).set_channels(1) + + # Export + out_name = f"{filename}_{i:03d}.wav" + out_path = os.path.join(output_dir, out_name) + chunk.export(out_path, format="wav") + + print(f"Saved {len(output_chunks)} chunks to {output_dir}") + +def main(): + parser = argparse.ArgumentParser(description="Audio Dataset Preprocessor for RVC") + parser.add_argument("--input", "-i", required=True, help="Input file or directory") + parser.add_argument("--output", "-o", required=True, help="Output directory") + parser.add_argument("--sr", type=int, default=40000, help="Target sample rate (default: 40000)") + parser.add_argument("--len", type=int, default=10000, help="Target chunk length in ms (default: 10000)") + + args = parser.parse_args() + + if os.path.isfile(args.input): + process_audio(args.input, args.output, sr=args.sr, chunk_len=args.len) + elif os.path.isdir(args.input): + files = [f for f in os.listdir(args.input) if f.lower().endswith(('.wav', '.mp3', '.flac', '.m4a', '.ogg'))] + for f in tqdm(files): + process_audio(os.path.join(args.input, f), args.output, sr=args.sr, chunk_len=args.len) + +if __name__ == "__main__": + main() diff --git a/tools/download_datasets.py b/tools/download_datasets.py new file mode 100644 index 000000000..85407ea82 --- /dev/null +++ b/tools/download_datasets.py @@ -0,0 +1,246 @@ +""" +Simplified dataset downloader - downloads voice data directly. +""" +import os +import sys +from pathlib import Path + +# Ensure we have datasets library +try: + from datasets import load_dataset + import soundfile as sf +except ImportError: + print("Installing required packages...") + os.system("pip install datasets soundfile") + from datasets import load_dataset + import soundfile as sf + +# Setup paths +SCRIPT_DIR = Path(__file__).parent +PROJECT_ROOT = SCRIPT_DIR.parent +DATASETS_DIR = PROJECT_ROOT / "datasets" + +def download_libritts(): + """Download LibriTTS samples for male/female voices.""" + print("\n=== Downloading LibriTTS (Male/Female Voices) ===") + + ds = load_dataset("mythicinfinity/libritts", "clean", split="train.clean.100", streaming=True) + + # Speaker ID to voice type mapping + speaker_voice_map = { + "19": "male_low", + "26": "male_low", + "1272": "male_low", + "32": "male_mid", + "40": "male_mid", + "1089": "male_mid", + "87": "female_low", + "103": "female_low", + "1284": "female_low", + "121": "female_high", + "237": "female_high", + "3570": "female_high", + } + + counts = {} + for vt in set(speaker_voice_map.values()): + counts[vt] = 0 + (DATASETS_DIR / vt).mkdir(parents=True, exist_ok=True) + + max_per_type = 100 + + for sample in ds: + speaker = str(sample.get("speaker_id", "")) + + if speaker in speaker_voice_map: + voice_type = speaker_voice_map[speaker] + + if counts[voice_type] < max_per_type: + out_dir = DATASETS_DIR / voice_type + audio = sample["audio"] + out_path = out_dir / f"libritts_{speaker}_{counts[voice_type]}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + counts[voice_type] += 1 + print(f" {voice_type}: {counts[voice_type]}/{max_per_type}", end="\r") + + if all(c >= max_per_type for c in counts.values()): + break + + print(f"\nLibriTTS complete: {counts}") + +def download_dialects(): + """Download English dialect samples.""" + print("\n=== Downloading English Dialects (Accents) ===") + + out_dir = DATASETS_DIR / "accent_non_native" + out_dir.mkdir(parents=True, exist_ok=True) + + count = 0 + max_samples = 150 + configs = ["scottish_male", "scottish_female", "irish_male", "welsh_male", "welsh_female", "northern_male"] + + for config in configs: + if count >= max_samples: + break + try: + ds = load_dataset("ylacombe/english_dialects", config, split="train", streaming=True) + for sample in ds: + if count >= max_samples: + break + audio = sample["audio"] + out_path = out_dir / f"dialect_{config}_{count}.wav" + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + count += 1 + print(f" accent_non_native: {count}/{max_samples}", end="\r") + except Exception as e: + print(f" Error with {config}: {e}") + + print(f"\nDialects complete: {count} samples") + +def download_genshin(): + """Download Genshin voices for anime style.""" + print("\n=== Downloading Genshin Voices (Anime Style) ===") + + ds = load_dataset("simon3000/genshin-voice", split="train", streaming=True) + + out_dir = DATASETS_DIR / "anime_airy" + out_dir.mkdir(parents=True, exist_ok=True) + + count = 0 + max_samples = 150 + target_chars = ["paimon", "barbara", "kokomi", "nahida", "klee", "qiqi", "diona"] + + for sample in ds: + speaker = str(sample.get("speaker", "")).lower() + lang = sample.get("language", "") + + if lang != "en": + continue + + if any(char in speaker for char in target_chars) and count < max_samples: + audio = sample["audio"] + clean_speaker = speaker.replace(" ", "_").replace("/", "_") + out_path = out_dir / f"genshin_{clean_speaker}_{count}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + count += 1 + print(f" anime_airy: {count}/{max_samples}", end="\r") + + if count >= max_samples: + break + + print(f"\nGenshin complete: {count} samples") + +def download_hifi(): + """Download Hi-Fi TTS for singing voices.""" + print("\n=== Downloading Hi-Fi TTS (Singing/High Quality) ===") + + ds = load_dataset("MikhailT/hifi-tts", "clean", split="train", streaming=True) + + # Map speakers to voice types + speaker_map = { + "92": "singing_male", + "6097": "singing_male", + "6670": "singing_female", + "6671": "singing_female", + } + + counts = {} + for vt in set(speaker_map.values()): + counts[vt] = 0 + (DATASETS_DIR / vt).mkdir(parents=True, exist_ok=True) + + max_per_type = 100 + + for sample in ds: + speaker = str(sample.get("speaker", "")) + + if speaker in speaker_map: + voice_type = speaker_map[speaker] + + if counts[voice_type] < max_per_type: + out_dir = DATASETS_DIR / voice_type + audio = sample["audio"] + out_path = out_dir / f"hifi_{speaker}_{counts[voice_type]}.wav" + + sf.write(str(out_path), audio["array"], audio["sampling_rate"]) + counts[voice_type] += 1 + print(f" {voice_type}: {counts[voice_type]}/{max_per_type}", end="\r") + + if all(c >= max_per_type for c in counts.values()): + break + + print(f"\nHi-Fi TTS complete: {counts}") + +def print_summary(): + """Print download summary.""" + print("\n" + "=" * 50) + print("DOWNLOAD SUMMARY") + print("=" * 50) + + voice_types = [ + "male_low", "male_mid", "female_low", "female_high", + "anime_airy", "accent_non_native", "singing_male", "singing_female", + "child", "elderly" + ] + + total = 0 + for vt in voice_types: + vt_dir = DATASETS_DIR / vt + if vt_dir.exists(): + files = list(vt_dir.glob("*.wav")) + count = len(files) + total += count + status = "✓" if count > 0 else "✗" + print(f" {status} {vt}: {count} files") + else: + print(f" ✗ {vt}: 0 files") + + print(f"\nTotal: {total} audio files downloaded") + print("\nNote: 'child' and 'elderly' need manual data - not available in these datasets.") + +def main(): + print("=" * 50) + print("RVC Voice Dataset Downloader") + print("=" * 50) + print(f"Output: {DATASETS_DIR}") + + # Create all directories + for vt in ["male_low", "male_mid", "female_low", "female_high", + "anime_airy", "accent_non_native", "singing_male", "singing_female", + "child", "elderly"]: + (DATASETS_DIR / vt).mkdir(parents=True, exist_ok=True) + + # Download each dataset + try: + download_libritts() + except Exception as e: + print(f"Error downloading LibriTTS: {e}") + + try: + download_dialects() + except Exception as e: + print(f"Error downloading Dialects: {e}") + + try: + download_genshin() + except Exception as e: + print(f"Error downloading Genshin: {e}") + + try: + download_hifi() + except Exception as e: + print(f"Error downloading Hi-Fi TTS: {e}") + + print_summary() + + print("\n" + "=" * 50) + print("NEXT STEPS") + print("=" * 50) + print("1. Review downloaded files in datasets/ folder") + print("2. Train models: python tools/train_batch.py --voice male_low") + print("3. Run experiments: python tools/run_experiments_batch.py") + +if __name__ == "__main__": + main() diff --git a/tools/run_experiments_batch.py b/tools/run_experiments_batch.py new file mode 100644 index 000000000..b1cd65b26 --- /dev/null +++ b/tools/run_experiments_batch.py @@ -0,0 +1,93 @@ +import os +import subprocess +import sys + +# Add root to path +now_dir = os.getcwd() +sys.path.append(now_dir) + +def main(): + # List of voices as defined in Task 7/10 + voices = [ + 'male_low', 'male_mid', 'female_low', 'female_high', + 'anime_airy', 'accent_non_native', 'singing_male', 'singing_female', + 'child', 'elderly' + ] + + # Base paths + weights_dir = os.path.join(now_dir, "assets", "weights") + datasets_dir = os.path.join(now_dir, "datasets") + experiments_dir = os.path.join(now_dir, "experiments") + + # Path to test_grid.py + test_grid_script = os.path.join(now_dir, "tools", "test_grid.py") + + print(f"Starting Batch Experiments for {len(voices)} voices...") + + for voice in voices: + print(f"\n--- Processing Voice: {voice} ---") + + # Check for model + model_name = f"{voice}.pth" + model_path = os.path.join(weights_dir, model_name) + + if not os.path.exists(model_path): + print(f"Skipping {voice}: Model not found at {model_path}") + continue + + # Check for test audio + # We need a reference audio to run inference on. + # Ideally, we should have a 'test_samples' folder or use a file from the dataset itself (held out). + # For now, let's look for a 'test.wav' in the voice's dataset folder, or a global test file. + + # Strategy: Look for 'test.wav' in dataset dir, else take the first wav file found. + voice_dataset_dir = os.path.join(datasets_dir, voice) + input_audio = None + + if os.path.exists(voice_dataset_dir): + potential_files = [f for f in os.listdir(voice_dataset_dir) if f.endswith(".wav")] + if "test.wav" in potential_files: + input_audio = os.path.join(voice_dataset_dir, "test.wav") + elif len(potential_files) > 0: + input_audio = os.path.join(voice_dataset_dir, potential_files[0]) + + if not input_audio: + print(f"Skipping {voice}: No input audio found in {voice_dataset_dir}") + continue + + # Check for index file (optional but recommended) + # Usually located in logs/{voice}/added_*.index + # We need to find it. + logs_dir = os.path.join(now_dir, "logs", voice) + index_path = "" + if os.path.exists(logs_dir): + for f in os.listdir(logs_dir): + if f.startswith("added_") and f.endswith(".index"): + index_path = os.path.join(logs_dir, f) + break + + print(f"Model: {model_name}") + print(f"Input: {input_audio}") + print(f"Index: {index_path if index_path else 'None'}") + + # Run test_grid.py + cmd = [ + sys.executable, test_grid_script, + "--model_name", model_name, + "--input_path", input_audio, + "--output_dir", experiments_dir + ] + + if index_path: + cmd.extend(["--index_path", index_path]) + + try: + subprocess.run(cmd, check=True) + print(f"Successfully ran experiments for {voice}") + except subprocess.CalledProcessError as e: + print(f"Error running experiments for {voice}: {e}") + + print("\nBatch Experiments Completed.") + +if __name__ == "__main__": + main() diff --git a/tools/test_grid.py b/tools/test_grid.py new file mode 100644 index 000000000..7f8728289 --- /dev/null +++ b/tools/test_grid.py @@ -0,0 +1,131 @@ +import itertools +import argparse +import os +import sys +import json +import time +from scipy.io import wavfile + +# Add root to path +now_dir = os.getcwd() +sys.path.append(now_dir) + +from dotenv import load_dotenv +from configs.config import Config +from infer.modules.vc.modules import VC + +def main(): + parser = argparse.ArgumentParser(description="Run RVC inference across a parameter grid.") + parser.add_argument("--model_name", required=True, help="Name of the model (must be in assets/weights)") + parser.add_argument("--input_path", required=True, help="Path to reference audio file") + parser.add_argument("--index_path", default="", help="Path to .index file") + parser.add_argument("--output_dir", default="experiments", help="Base directory for output") + parser.add_argument("--f0up_key", type=int, default=0, help="Pitch shift (semitones)") + + args = parser.parse_args() + + # Load config and VC + load_dotenv() + config = Config() + vc = VC(config) + vc.get_vc(args.model_name) + + # Define Grid + # You can modify this grid in the code or make it configurable via JSON later + grid = { + "f0method": ["rmvpe", "pm"], # "harvest", "crepe" are slower + "index_rate": [0.0, 0.5, 0.75, 1.0], + "filter_radius": [3], + "rms_mix_rate": [0.25, 1.0], + "protect": [0.33], + "resample_sr": [0], # 0 means no resampling + } + + # Prepare output directory + model_slug = os.path.splitext(args.model_name)[0] + audio_slug = os.path.splitext(os.path.basename(args.input_path))[0] + timestamp = int(time.time()) + experiment_dir = os.path.join(args.output_dir, model_slug, audio_slug, str(timestamp)) + os.makedirs(experiment_dir, exist_ok=True) + + print(f"Starting Grid Search Experiment") + print(f"Model: {args.model_name}") + print(f"Input: {args.input_path}") + print(f"Output: {experiment_dir}") + + # Generate combinations + keys = grid.keys() + values = grid.values() + combinations = list(itertools.product(*values)) + + results = [] + + total = len(combinations) + print(f"Total combinations to run: {total}") + + for i, combo in enumerate(combinations): + params = dict(zip(keys, combo)) + print(f"[{i+1}/{total}] Running with {params}") + + # Construct output filename + # e.g. rmvpe_idx0.5_rms1.0.wav + filename_parts = [f"{k}{v}" for k, v in params.items()] + filename = "_".join(filename_parts) + ".wav" + output_path = os.path.join(experiment_dir, filename) + + # Run Inference + try: + info, opt = vc.vc_single( + 0, # sid + args.input_path, + args.f0up_key, + None, # f0_file + params["f0method"], + args.index_path, + None, # file_index2 + params["index_rate"], + params["filter_radius"], + params["resample_sr"], + params["rms_mix_rate"], + params["protect"] + ) + + if "Success" in info: + tgt_sr, audio_opt = opt + wavfile.write(output_path, tgt_sr, audio_opt) + results.append({ + "params": params, + "output_file": filename, + "status": "success" + }) + else: + print(f"Error: {info}") + results.append({ + "params": params, + "status": "failed", + "error": info + }) + + except Exception as e: + print(f"Exception: {e}") + results.append({ + "params": params, + "status": "error", + "error": str(e) + }) + + # Save metadata + metadata_path = os.path.join(experiment_dir, "metadata.json") + with open(metadata_path, "w") as f: + json.dump({ + "model": args.model_name, + "input_path": args.input_path, + "f0up_key": args.f0up_key, + "grid": grid, + "results": results + }, f, indent=2) + + print(f"Experiment completed. Results saved to {experiment_dir}") + +if __name__ == "__main__": + main() diff --git a/tools/train_batch.py b/tools/train_batch.py new file mode 100644 index 000000000..90604efb2 --- /dev/null +++ b/tools/train_batch.py @@ -0,0 +1,194 @@ +import os +import sys +import time +import json +import argparse +import subprocess +from pathlib import Path + +# Add project root to path +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from configs.config import Config + +def run_command(cmd, cwd=None): + print(f"Running: {cmd}") + process = subprocess.Popen( + cmd, + shell=True, + cwd=cwd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True + ) + + # Stream output + while True: + output = process.stdout.readline() + if output == '' and process.poll() is not None: + break + if output: + print(output.strip()) + + rc = process.poll() + return rc + +def train_voice_model(voice_name, dataset_path, epochs=50, batch_size=8, sample_rate="40k", version="v2", gpu_id="0"): + """ + Automates the RVC training pipeline for a single voice model. + """ + print(f"\n{'='*50}") + print(f"Starting training for: {voice_name}") + print(f"{'='*50}\n") + + root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + logs_dir = os.path.join(root_dir, "logs", voice_name) + + # 1. Preprocessing + print("\n[Step 1/4] Preprocessing Data...") + cmd_preprocess = f"python infer/modules/train/preprocess.py \"{dataset_path}\" {sample_rate.replace('k','000')} 2 \"{logs_dir}\" False 3.0" + if run_command(cmd_preprocess, cwd=root_dir) != 0: + print("Error in preprocessing") + return False + + # 2. Feature Extraction + print("\n[Step 2/4] Extracting Features...") + # F0 extraction (rmvpe_gpu) + cmd_f0 = f"python infer/modules/train/extract/extract_f0_rmvpe.py 1 0 0 \"{logs_dir}\" True" + if run_command(cmd_f0, cwd=root_dir) != 0: + print("Error in F0 extraction") + return False + + # Feature extraction (HuBERT) + cmd_feat = f"python infer/modules/train/extract_feature_print.py {gpu_id} 1 0 0 \"{logs_dir}\" {version} False" + if run_command(cmd_feat, cwd=root_dir) != 0: + print("Error in feature extraction") + return False + + # 3. Training Model + print("\n[Step 3/4] Training Model...") + # Determine pretrained models + if version == "v1": + pg = f"assets/pretrained/f0G{sample_rate}.pth" + pd = f"assets/pretrained/f0D{sample_rate}.pth" + else: + pg = f"assets/pretrained_v2/f0G{sample_rate}.pth" + pd = f"assets/pretrained_v2/f0D{sample_rate}.pth" + + cmd_train = ( + f"python infer/modules/train/train.py -e \"{voice_name}\" -sr {sample_rate} -f0 1 -bs {batch_size} " + f"-g {gpu_id} -te {epochs} -se 10 -pg \"{pg}\" -pd \"{pd}\" -l 0 -c 0 -sw 1 -v {version}" + ) + + if run_command(cmd_train, cwd=root_dir) != 0: + print("Error in training") + return False + + # 4. Training Index + print("\n[Step 4/4] Training Index...") + + index_script = f""" +import sys +import os +import numpy as np +import faiss +from sklearn.cluster import MiniBatchKMeans + +exp_dir = "{logs_dir}" +version = "{version}" +feature_dir = os.path.join(exp_dir, "3_feature256" if version == "v1" else "3_feature768") + +if not os.path.exists(feature_dir): + print("Feature dir not found") + sys.exit(1) + +listdir_res = list(os.listdir(feature_dir)) +if len(listdir_res) == 0: + print("No features found") + sys.exit(1) + +npys = [] +for name in sorted(listdir_res): + phone = np.load(os.path.join(feature_dir, name)) + npys.append(phone) + +big_npy = np.concatenate(npys, 0) +big_npy_idx = np.arange(big_npy.shape[0]) +np.random.shuffle(big_npy_idx) +big_npy = big_npy[big_npy_idx] + +if big_npy.shape[0] > 2e5: + big_npy = ( + MiniBatchKMeans( + n_clusters=10000, + batch_size=256 * 8, + compute_labels=False, + init="random", + ) + .fit(big_npy) + .cluster_centers_ + ) + +np.save(os.path.join(exp_dir, "total_fea.npy"), big_npy) +n_ivf = min(int(16 * np.sqrt(big_npy.shape[0])), big_npy.shape[0] // 39) +index = faiss.index_factory(256 if version == "v1" else 768, "IVF%s,Flat" % n_ivf) +index_ivf = faiss.extract_index_ivf(index) +index_ivf.nprobe = 1 +index.train(big_npy) +faiss.write_index( + index, + os.path.join(exp_dir, f"trained_IVF{{n_ivf}}_Flat_nprobe_1_{voice_name}_{version}.index") +) + +batch_size_add = 8192 +for i in range(0, big_npy.shape[0], batch_size_add): + index.add(big_npy[i : i + batch_size_add]) + +faiss.write_index( + index, + os.path.join(exp_dir, f"added_IVF{{n_ivf}}_Flat_nprobe_1_{voice_name}_{version}.index") +) +print("Index training complete") +""" + + # Write temp script + with open("temp_index_train.py", "w") as f: + f.write(index_script) + + if run_command("python temp_index_train.py", cwd=root_dir) != 0: + print("Error in index training") + os.remove("temp_index_train.py") + return False + + os.remove("temp_index_train.py") + print(f"\nSuccessfully trained model for {voice_name}!") + return True + +def main(): + parser = argparse.ArgumentParser(description="Batch Train RVC Models") + parser.add_argument("--voice", type=str, help="Specific voice name to train (folder name in datasets/)") + parser.add_argument("--epochs", type=int, default=50, help="Number of epochs") + parser.add_argument("--batch_size", type=int, default=8, help="Batch size") + + args = parser.parse_args() + + datasets_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "datasets") + + if args.voice: + voices = [args.voice] + else: + voices = [d for d in os.listdir(datasets_dir) if os.path.isdir(os.path.join(datasets_dir, d))] + + print(f"Found {len(voices)} voices to train: {voices}") + + for voice in voices: + dataset_path = os.path.join(datasets_dir, voice) + # Check if dataset has files + if not os.path.exists(dataset_path) or not os.listdir(dataset_path): + print(f"Skipping {voice} - no data found") + continue + + train_voice_model(voice, dataset_path, epochs=args.epochs, batch_size=args.batch_size) + +if __name__ == "__main__": + main()