Files
soprano_to_rvc/__pycache__/headless_rvc.cpython-310.pyc

137 lines
13 KiB
Plaintext
Raw Normal View History

2026-01-13 00:20:55 +02:00
o
6sei<65>S<00>@s<>dZddlZddlZddlZddlZddlZddlZddlmZej ej
dd<05>e<05> e <0C>Z dejd<ejdkr<d ejd
<ee<10>jZe<01><13>Zed Zej<16>dee<15><01>ddlZdd lmZmZddlZddlZddl Z ddl!m"m#Z$ddl%Z%dd l&m'Z'ddl(m)Z*ddl+m,Z-ddl.m/Z/e<1A>Z0e<1A>Z1e2e<1B>d<10>Z3ga4Gdd<12>dej5<6A>Z6e7e3<65>D]Z8e6e0e1<65>Z9de9_:e9<65>;<3B>t4<74><e9<65>q<>dd<15>Z=e<06>>e=<3D>dd<17>Z?Gdd<19>d<19>Z@Gdd<1B>d<1B>ZAdd<1D>ZBe dkr<>eB<65>dSdS)z<>
Headless RVC Voice Conversion
Uses the RVC GUI logic without the GUI window for headless operation.
Configuration via JSON file or command-line arguments.
<EFBFBD>N)<01>Pathz%(levelname)s: %(message)s)<02>level<65>format<61>4<>OMP_NUM_THREADS<44>darwin<69>1<>PYTORCH_ENABLE_MPS_FALLBACKz&Retrieval-based-Voice-Conversion-WebUI)<02>Queue<75> cpu_count)<01> TorchGate)<01>rtrvc)<01>Config<69>c@seZdZdd<02>Zdd<04>ZdS)<06>HarvestcCstj<01>|<00>||_||_dS<00>N)<05>multiprocessing<6E>Process<73>__init__<5F>inp_q<5F>opt_q)<03>selfrr<00>r<00>)/data/NVMe/AI/soprano2RVC/headless_rvc.pyr9s 
zHarvest.__init__c
Cslddl}ddl} |j<02><03>\}}}}}|j|<04>|j<06>ddddd<07>\}} |||<t|<05><08><00>|kr5|j <09>
|<07>q )Nr<00><00><>>iL<00>2<00>
)<04>fsZf0_ceilZf0_floorZ frame_period) <0B>numpy<70>pyworldr<00>get<65>harvest<73>astype<70>double<6C>len<65>keysr<00>put)
r<00>npr <00>idx<64>xZres_f0<66>n_cpu<70>ts<74>f0<66>trrr<00>run>s

<EFBFBD> <02>z Harvest.runN)<05>__name__<5F>
__module__<EFBFBD> __qualname__rr/rrrrr8s rTcCs<tD]
}|<00><01>r |<00><02>qtD]}|jdd<02>qt<00><04>dS)z*Terminate all harvest processes gracefullyg<79><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)<01>timeoutN)<05>harvest_processes<65>is_alive<76> terminate<74>join<69>clear)<01>prrr<00>cleanup_harvest_processesWs<02> r:cCsFt<00>||<00>}tj<02>||<00>}tj<02>||<00>}t<00>|<05>t<00>|<06>}|jd}|ddkr7|dd<04>d9<n
|dd<05>d9<t<00>|<05>} t<00>|<06>}
|
| } | dtjt<00> | dtjd<00>} dtjt<00>
|dd<00><01> |<00>| } t<00>
|<08><01> d<04><01> |<00>|} ||d||dt<00> |t<00>| | | <00>d<04>||}|S)z$Phase vocoder for smooth crossfadingr<00>r<00><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><00>?)<0F>torch<63>sqrt<72>fft<66>rfft<66>abs<62>shape<70>angler(<00>pi<70>floor<6F>arange<67>to<74> unsqueeze<7A>sum<75>cos)<0F>a<>bZfade_outZfade_in<69>window<6F>fa<66>fbZabsab<61>nZphiaZphibZ
deltaphase<EFBFBD>wr.<00>resultrrr<00> phase_vocodergs*
 

&&

<02>$<02><02>rTc@s.eZdZdZd dd<04>Zdd<06>Zedd<08><00>ZdS)
<EFBFBD>HeadlessRVCConfigz(Configuration for headless RVC operationNcCs<>d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_
d |_ d |_ d |_ d|_d|_d
|_d |_ttd <0C>|_|rR|<01><14>D]\}}t||<02>rQt|||<03>qBdSdS) N<>r<00>g<00>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rmvpeFi<46><69>r;<00>)<17>pth_path<74>
index_path<EFBFBD>pitch<63>formant<6E>
block_time<EFBFBD>crossfade_time<6D>
extra_time<EFBFBD> threshold<6C>
index_rate<EFBFBD> rms_mix_rate<74>f0method<6F>I_noise_reduce<63>O_noise_reduce<63>use_pv<70> input_device<63> output_device<63>
samplerate<EFBFBD>channels<6C>minr+<00>items<6D>hasattr<74>setattr)r<00> config_dict<63>key<65>valuerrrr<00>s4 
 <02><04>zHeadlessRVCConfig.__init__cCsTdd<02>|j<00><01>D<00>}t|d<03><02>}tj||dd<05>Wd<00>dS1s#wYdS)zSave configuration to JSON filecSs i|] \}}|<01>d<00>s||<02>qS)<01>_)<01>
startswith)<03>.0<EFBFBD>k<>vrrr<00>
<dictcomp><3E>s  <0C>z*HeadlessRVCConfig.save.<locals>.<dictcomp>rRr;)<01>indentN)<05>__dict__rn<00>open<65>json<6F>dump)r<00>pathrq<00>frrr<00>save<76>s "<22>zHeadlessRVCConfig.savecCsBt|d<01><02>}t<01>|<02>}Wd<00>||<03>S1swY||<03>S)z!Load configuration from JSON file<6C>rN)r|r}<00>load)<04>clsrr<>rqrrrr<><00>s  
<EFBFBD><10>zHeadlessRVCConfig.loadr)r0r1r2<00>__doc__rr<><00> classmethodr<64>rrrrrU<00>s 
&rUc@sLeZdZdZdefdd<04>Zdd<06>Zdejdejfd d
<EFBFBD>Z d d <0C>Z
d d<0E>Z dS)<10> HeadlessRVCz&Headless RVC processor using GUI logic<69>configcCsn||_tj<02><03>}tjdgt_t<04><05>}t<04>tt<08><01>t <09>|_
t<04>|<03>|t_d|_ d|_ d|_ d|_d|_dS)NrF<>vc)<10>
gui_config<EFBFBD>sys<79>argv<67>copy<70>os<6F>getcwd<77>chdir<69>str<74>rvc_dirrr<><00>running<6E>stream<61>function<6F>rvc<76>tgt_sr)rr<>Z
saved_argv<EFBFBD> saved_cwdrrrr<00>s


zHeadlessRVC.__init__cCsVt|jj<02>}|<01><03>st|<00><05>}t|jj<06>}|<02><03>s t|<00><05>}td|<01><00><02>td|<02><00><02>t<08> <09>}t<08>
t t <0C><01>z+t <0A>|jj|jjt |<01>t |<02>|jj|jjtt|jt|d<03>rZ|jnd<04>
|_Wt<08>
|<03>nt<08>
|<03>w|jj|_|jrv|jn|jj|j_|jjd|_tt<1C>|jj|jj|j<00>|j<00>|_d|j|j|_ tt<1C>|jj!|jj|j<00>|j<00>|_"t#|j"d|j<00>|_$|j|_%tt<1C>|jj&|jj|j<00>|j<00>|_'t(j)|j'|j"|j%|j|jj*t(j+d<08>|_,|j,<2C>-<2D>|_.t(j)d|j,j/d |j|jj*t(j+d<08>|_0tj)d|jd
d <0B>|_1t(j)|j$|jj*t(j+d<08>|_2|j2<6A>-<2D>|_3|j,<2C>-<2D>|_4t|j'|j<00>|_5|j|j$|j%|j|_6t(<28>7d tj8t(j9d d|j$|jj*t(j+d<0F><00>d|_:d|j:|_;t<j=|jjdddddt(j+d<17><07>>|jj*<2A>|_?|j|jjk<03>r<>t<j=|j|jjddddt(j+d<17><07>>|jj*<2A>|_@nd|_@tA|jjdd<19><02>>|jj*<2A>|_Btd<1A>dS)z-Initialize RVC model (same as GUI's start_vc)zLoading RVC model: zLoading index: r<>N<>d<00><>rZ)<02>device<63>dtyper<00>float32)r<>r=rW<00><00>?)<03>stepsr<73>r<>r;rr<00><>g<>G<EFBFBD>z<14><>?Zsinc_interp_kaisergQaTi<10>-@)<07> orig_freq<65>new_freqZlowpass_filter_widthZrolloffZresampling_method<6F>betar<61>T)<02>srZ nonstationaryu&✓ RVC model initialized successfully)Crr<>r[<00> is_absolute<74>
SCRIPT_DIR<EFBFBD>resolver\<00>printr<74>r<>r<>r<>r<><00>rvc_for_realtimeZRVCr]r^rcr+rrr<>ror<>r<>rk<00>zc<7A>intr(<00>roundr_<00> block_frame<6D>block_frame_16kr`Zcrossfade_framerm<00>sola_buffer_frame<6D>sola_search_framera<00> extra_framer><00>zerosr<73>r<><00> input_wav<61>clone<6E>input_wav_denoiserC<00> input_wav_res<65>
rms_buffer<EFBFBD> sola_buffer<65> nr_buffer<65> output_buffer<65> skip_head<61> return_length<74>sinrE<00>linspace<63>fade_in_window<6F>fade_out_window<6F>tatZResamplerH<00> resampler<65>
resampler2r <00>tg)rr[r\r<>rrr<00>initialize_rvc<76>s<>    <08>
<06><02><06><02><06><02><06><02><02><02><08> <08><08>  <02><02><06><02><04><02><02> <02><04> <04>
<04>
<04>
<06>
<04>
<04> zHeadlessRVC.initialize_rvc<76>indata<74>outdatac Cs<>ddl}t<01><02>}t<01>tt<05><01><00>z,|<06><06>}t<07>|j <09>}|j
j dkr<>t <0C> |j|<01>}tjj|d|j|jd<05>dd<02>dd<02>f} |d|jd<02>|jdd<02><|d|j|jdd<02>}tj| dd <09>d|j
j k}
t|
jd<00>D]} |
| r<>d|| |j| d
|j<00><qm||jdd<02>}|j|jd<02><00><17>|jd|j <00><t<18>|<01><01>|jj<1C>|j|jd d<02><|j|jd<02><00><17>|jd|j <00><|j
j<1F>rF|j |jd<02><00><17>|j d|j <00><|j|j! |jd<02>} |<00>"| <0C>#d<01>|j<15>#d<01><01><02>$d<01>} | d|j!<21>|j%9<| d|j!<21>|j&|j'7<| d|j<16>|j |j d<02><| |jd<02>|j&dd<02><|<00>(|j |j d|jd<02><00>d d<02>|j|j d d<02><n&|<00>(|j|jd d|jd<02><00>d d<02>|jd |jd|jd
d<02><|j)<29>*|j|j|j+|j,|j
j-<2D>} |j.du<01>r<>|<00>.| <0A>} |j
j/<2F>r<>|j0|jd<02><00><17>|j0d|j <00><| |j d<02>|j0|j d<02><|<00>"| <0A>#d<01>|j0<6A>#d<01><01><02>$d<01>} |j
j1d
k<00>re|j
j<1F>r<>|j |j2d<02>n|j|j2d<02>} tjj| d| jd<00><00>3<EFBFBD><00>4<EFBFBD>d|j|jd<05>}t<18>|<0E><01>|jj<1C>}t5j6|<0E>#d<01>| jdd
d dd<0F>dddd<10>f}tjj| dd<02><00>3<EFBFBD><00>4<EFBFBD>d|j|jd<05>}t<18>|<0F><01>|jj<1C>}t5j6|<0F>#d<01>| jdd
d dd<0F>dddd<10>f}t<18>7|t<18>8|<0F>d<00>}| t<18>9||t<18>:d
|j
j1<00><01>9} | ddd|j!|j;<00>f}t5<74><||j=dddd<02>f<00>}t<18>>t5<74><|dtj?d
d
|j!|jjd<12><04>d<00>}t@jAdk<02>r<>t<18>7|d|d<00>\}}|<14>B<EFBFBD>}n t<18>C|d|d<00>}| |d<02>} dt|jj<1C>v<00>s<>|j
jD<EFBFBD>s<>| d|j!<21>|j%9<| d|j!<21>|j=|j'7<ntE|j=| d|j!<21>|j'|j%<25>| d|j!<21><| |j|j|j!<00>|j=dd<02><| d|j<16><00>F|j
jGd
<EFBFBD><02>H<EFBFBD><00>3<EFBFBD><00>4<EFBFBD>|dd<02><|<06><06>|}tI<74>Jd|d<18>d<19><03>Wt<01>|<07>dSt<01>|<07>w)z?
Audio processing callback (same logic as GUI)
rNrXrZ)<03>y<> frame_length<74>
hop_lengthr;<00><><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>)<01>refrr<>i`<60><><EFBFBD><EFBFBD>linearT)<03>size<7A>mode<64> align_cornersr<g<><67><EFBFBD><EFBFBD>MbP?)r<>g:<3A>0<EFBFBD><30>yE>r)rr<00> privateuseonez Infer time: z.2f<EFBFBD>s)K<>timer<65>r<>r<>r<>r<><00> perf_counter<65>librosa<73>to_mono<6E>Tr<54>rbr(<00>appendr<64><00>feature<72>rmsr<73><00>amplitude_to_db<64>rangerCr<>r<>r<>r><00>
from_numpyrHr<>r<>r<>r<>rfr<>r<>r<>rI<00>squeezer<65>r<>r<>r<>r<><00>inferr<72>r<>rer<>rgr<>rdr<><00>cpur<00>F<> interpolate<74>max<61>
zeros_like<EFBFBD>pow<6F>tensorr<72><00>conv1dr<64>r?<00>onesr<73><00>platform<72>item<65>argmaxrhrT<00>repeatrlr.<00>logger<65>debug)rr<>r<><00>frames<65>times<65>statusr<73>r<><00>
start_timer<EFBFBD>Z db_threshold<6C>ir<69>Z infer_wavZrms1Zrms2Z
conv_inputZcor_nomZcor_denrtZ sola_offset<65>
total_timerrr<00>audio_callbackSs<>  <04><04><02><02>"&"
" <02><18>, <20><04> 

" *<06> <04> <04><06> <04> <04><06><04><02><02><04> 
   <0E><0E>  
<EFBFBD> zHeadlessRVC.audio_callbackcCs<>|jr td<01>dS|jdur|<00><03>td<03>td|jj<05><00><02>td|jj<06><00><02>td|jj<07><00><02>d|_tj |j
|j |jj|jj d|jj|jjfd <09>|_ |j <0A><0E>td
<EFBFBD>dS) zStart the audio streamzAlready runningNzStarting audio stream...z Input: z
Output: z Sample rate: Tr<54>)<06>callback<63> blocksizerkrlr<>r<>u✓ Audio stream started)r<>r<>r<>r<>r<>rirjrk<00>sd<73>Streamr<6D>r<>rlr<><00>start<72>rrrrr<><00>s(
<08>
 zHeadlessRVC.startcCsF|jsdSd|_|jdur|j<01><02>|j<01><03>d|_t<04>td<03>dS)zStop the audio streamNFu✓ Audio stream stopped)r<>r<><00>abort<72>closer:r<>r<>rrr<00>stops


 zHeadlessRVC.stopN) r0r1r2r<>rUrr<>r(<00>ndarrayr<79>r<>r<>rrrrr<><00>s r<>cCs<>tjdd<02>}|jdtdd<05>|jdtdd<05>|jdtd d<05>|jd
td d d <0A>|jdtdd<05>|jdtdd<05>|jdtdgd<14>dd<16>|jdtddd <0A>|jdtdd<05>|<00><06>}|jrjt<08> |j<07>}t
d|j<07><00><02>nt<08>}|j rt|j |_ |j r{|j |_|jd kr<>|j|_|jr<>|j|_|jr<>|j|_|jr<>|j|_|jr<>|j|_|jr<>|<02>|j<14>t
d|j<14><00><02>dS|j s<>t
d<1E>dSt
d<1F>t
d<01>t
d<1F>t|<02>}|<03><17>z$z t
d <20> t<18>d"<22>q<>ty<>t
d#<23>YnwW|<03><1B>t
d$<24>dS|<03><1B>t
d$<24>w)%NzHeadless RVC Voice Conversion)<01> descriptionz--configzPath to JSON configuration file)<02>type<70>helpz--pthzPath to RVC model (.pth file)z--indexzPath to index filez--pitchrzPitch shift in semitones)r<00>defaultrz--input-devicezInput audio devicez--output-devicezOutput audio devicez
--f0methodrY)<05>pmr"<00>creperY<00>fcpezF0 extraction method)rr<00>choicesrz --index-raterWzIndex feature ratio (0-1)z --save-configzSave configuration to filezLoaded configuration from: zSaved configuration to: z2Error: --pth or --config with pth_path is requiredzF======================================================================z
Press Ctrl+C to stop...Ti<54>z
Stopping...zGoodbye!)<1C>argparse<73>ArgumentParser<65> add_argumentr<74>r<><00>float<61>
parse_argsr<EFBFBD>rUr<>r<><00>pthr[<00>indexr\r]rirjrerc<00> save_configr<67>r<>r<>r<><00>sleep<65>KeyboardInterruptr<74>)<04>parser<65>argsr<73>r<>rrr<00>mainsr 
<06> 
 
<02>  <02> <08>
r<00>__main__)Cr<43>r<>r<>r}r<00>logging<6E>atexit<69>pathlibr<00> basicConfig<69>INFO<46> getLoggerr0r<><00>environr<6E><00>__file__<5F>parentr<74>r<><00> ORIGINAL_DIRr<52>r<00>insertr<74>rr
r rr(<00> sounddevicer<65>r>Ztorch.nn.functional<61>nn<6E>
functionalr<EFBFBD>r<>Ztools.torchgater Ztorchaudio.transforms<6D>
transformsr<EFBFBD>Z infer.libr r<>Zconfigs.configrrrrmr+r4rrr<>rtr9<00>daemonr<6E>r<>r:<00>registerrTrUr<>rrrrr<00><module>sh <06>




      
 
7bE
<04>