
Muhtasari wa mradi
Mtiririko huu wa kazi hutumiwa kutengeneza sauti za ukaribu za lugha mbili, Kichina na Kiingereza, zilizo za asili na zenye mwendelezo. Kanuni kuu si kuifanya modeli ya kubadilisha maandishi kuwa sauti iige kila sauti, bali kugawanya bidhaa ya mwisho katika nyimbo zenye majukumu tofauti: ElevenLabs hushughulikia maneno na upumuaji, rekodi halisi hushughulikia sauti za busu na mazingira, ffmpeg hushughulikia kukata, kubadilisha kasi, kuchanganya na kuunganisha, huku Whisper ikiwa zana ya kukagua ubora.
Hitimisho muhimu zaidi: modeli ya sauti inapaswa kushughulikia “maneno” na upumuaji unaoingia katika mdundo wa kuzungumza pekee. Sauti za busu, sauti za unyevunyevu na athari nyingine zisizo za lugha zinapaswa kutengenezwa kando, kisha zichanganywe na sauti ya mtu.
Mtiririko wa kazi katika README ulikamilishwa kwenye Mac mini, lakini mbinu zilizotumika hazitegemei aina fulani ya Mac. Mradi unaweza kurudiwa mradi tu mfumo uweze kuita ElevenLabs API, kuendesha ffmpeg na kutumia Whisper kwa unukuzi.
Zana kuu na majukumu
- ElevenLabs: Hutengeneza timbre kupitia Voice Design na kutumia modeli ya kubadilisha maandishi kuwa sauti kutengeneza maneno.
- ffmpeg: Husawazisha kiwango cha sampuli, hupunguza kasi ya usemi, hukata nyenzo, huongeza na kupunguza sauti taratibu, huchanganya na kuunganisha.
- Whisper: Hukagua ikiwa nyenzo zisizo za lugha zimesomwa na modeli kama maneno yanayotambulika.
- Rekodi halisi zilizoidhinishwa kisheria: Hutoa sauti za mazingira za kujitegemea. Mtiririko wa awali ulitumia tu nyenzo za CC0 za umma na kurekodi vyanzo vyake.
Usakinishaji na maandalizi kabla ya kuanza
1. Andaa ElevenLabs
Jisajili kwenye ElevenLabs na upate kitambulisho kinachoweza kuita violesura vya Voice Design na kubadilisha maandishi kuwa sauti. Violesura vinavyohitajika ni POST /v1/text-to-voice/design na POST /v1/text-to-voice.
Kwanza tuma voice_description na maandishi ya majaribio ili kupata hakikisho kadhaa za wagombea; baada ya kuchagua mgombea, tumia generated_voice_id yake kuhifadhi timbre rasmi. Baada ya kuhifadhiwa, rekodi voice_id; miunganisho yote inayofuata itatumia kitambulisho hiki.
2. Sakinisha ffmpeg
Thibitisha kuwa terminal inaweza kuendesha ffmpeg moja kwa moja. Kwenye macOS, unaweza kuisakinisha kupitia kidhibiti cha kawaida cha vifurushi. Baada ya usakinishaji, endesha amri hii kukagua:
ffmpeg -version
3. Andaa Whisper
Katika mtiririko huu, Whisper haitumiki kutengeneza sauti, bali kama “kichunguzi cha sauti”. Hukagua vipande vya busu au visivyo vya lugha: ikiwa vinaweza kunukuliwa kwa uthabiti kuwa maneno, kwa kawaida inaonyesha kuwa modeli inasoma maneno ya kuiga sauti badala ya kutoa sauti halisi isiyo ya lugha.
4. Unda saraka za nyenzo
Inashauriwa kupanga faili mapema kulingana na majukumu, zikiwa na angalau matokeo ya sauti ya mtu, wagombea wa busu, nyenzo za busu zilizopita ukaguzi, sauti asili za mazingira, vipande vya mazingira vilivyokatwa na faili za mwisho zilizochanganywa. Hii huzuia nyenzo za wagombea ambazo hazijakaguliwa kutumiwa moja kwa moja katika bidhaa ya mwisho.
Hatua ya kwanza: Tengeneza timbre ya lugha mbili, Kichina na Kiingereza
Tumia maelezo ya maandishi badala ya kuchagua tu kwenye maktaba ya sauti
Kulingana na majaribio ya README, timbre za Kichina zilizopo tayari zinaweza kuwa na lafudhi zinapotumika kwa Kiingereza, huku kueleza wazi asili ya lugha mbili kupitia Voice Design kukisaidia kupata matokeo ya asili katika Kichina na Kiingereza. Maelezo yanapaswa kubainisha aina nne za taarifa: uwezo wa lugha ya mama, umri, uhusiano au haiba ya mhusika, na hisia inayolengwa.
Haya ndiyo maelezo yaliyotumiwa katika mtiririko wa awali; yanaweza kurekebishwa kulingana na mahitaji ya mhusika:
Native bilingual speaker of Mandarin Chinese (standard putonghua) and American English,
both at native level, with no cross-language accent in either. Male, 35–40. Studio quality.
Persona: mature, dominant, doting. Emotion: composed, doting, low-burning.
Rich, chesty, slightly gravelly low voice; unhurried, even pacing with weight on key words
and a breathy softness at the ends of sentences.
Maandishi ya majaribio yasitumie nakala za matangazo. Chagua maneno ambayo mhusika angesema kwa kweli katika maisha ya kawaida, na tengeneza wagombea kadhaa kwa maelezo yale yale. Wakati wa kusikiliza, kipaumbele kiwe kama anasikika kama mtu anayelengwa anayezungumza kwa asili, si kulinganisha tu ikiwa sauti ni nzito au ya kupendeza.
Chagua modeli inayofaa
- Mazungumzo ya kawaida: README inapendekeza v3, inayofaa kuonyesha hisia za kila siku kutoka katika maudhui ya maandishi.
- Simu za moja kwa moja au matukio ya ukaribu: v4 inapendekezwa. Inafaa zaidi kushughulikia Kichina, Kiingereza na mchanganyiko wa lugha hizo katika timbre moja, na pia hutambua kwa urahisi lebo nyepesi za mwongozo wa sauti.
- Vipande virefu vya Kiingereza pekee: Ikiwa hutumii v4, unaweza kuchagua
eleven_turbo_v2_5na kuweka wazilanguage_code=en, ili kupunguza lafudhi ya Kichina katika Kiingereza.
Rekebisha vigezo vya timbre
Sehemu ya kuanzia iliyopimwa katika README ni hii:
stability=0.35: Huleta mabadiliko na uigizaji mkubwa zaidi.stability=0.5: Huwa karibu zaidi na mazungumzo ya kawaida na hupunguza hisia ya “kuigiza kwa makusudi”.similarity_boost=0.8: Hutumiwa kudumisha uthabiti wa timbre inayolengwa.style=0.3: Rekodi ya awali ilibainisha kuwa v3 haitambui kigezo hiki, kwa hiyo usitegemee kukidhibiti v3.
Wakati wa utatuzi, badilisha kigezo kimoja pekee kwa wakati mmoja. Hifadhi sauti ya msingi ambayo imepokea tathmini nzuri, kisha rekebisha uthabiti au lebo moja tu ili uweze kutambua kwa usahihi chanzo cha mabadiliko.
Hatua ya pili: Fanya upumuaji uingie katika mdundo wa usemi
Ongeza lebo tu sauti inapobadilika
Usiongeze lebo katika kila sentensi. Kwa kila kundi la sentensi sita hadi kumi, lebo mbili au tatu nyepesi kwa kawaida zinatosha; sentensi zinazofuata zinaweza kuendeleza sauti ya awali. Maneno yaliyotumika mara nyingi katika mtiririko wa awali ni pamoja na low, close, quiet, soft na unhurried.
[low and close to her ear, unhurried]
……来。别躲。
……靠近一点。对。
[quiet laugh under the breath]
……急什么。
Maneno makali kama intense, heavy, growl, strained na rough si kwamba hayawezi kutumiwa kabisa, lakini katika majaribio ya awali yalifanya sauti iwe ya kupita kiasi kwa urahisi. Mkakati unaotegemeka zaidi ni kupunguza sauti, kusogea karibu na kupunguza kasi, badala ya kuilazimisha modeli kuigiza kwa nguvu.
Tumia alama za uakifishaji kuunda upumuaji
Badala ya kuandika heavy breathing mara kwa mara, kuongeza “……” kwa kiasi mwanzoni, mwishoni au katikati ya sentensi kuna uwezekano mkubwa wa kutoa mapumziko ya asili. Katika kila kundi, panga pumzi mbili au tatu zinazoonekana wazi, na badilisha namna zinavyoonyeshwa, kama vile kutoa pumzi kwa upole, kusita katikati ya sentensi, kushikilia pumzi kwa muda mfupi, kutoa pumzi huku ukitabasamu au kuikata sauti katikati.
Pumzi ile ile inaporudiwa mfululizo, marudio hujitokeza wazi. Baada ya kutengeneza, sikiliza kipande kizima; usikague sentensi moja pekee.
Tengeneza aya nzima inapowezekana
Unapotengeneza aya nzima mara moja, mwendelezo wa upumuaji, hisia na sauti ya juu huwa rahisi zaidi. Kuunganisha sentensi nane zilizotengenezwa tofauti hufanya kila kipande kionekane kama kinaanza upya. Ikiwa simu ya moja kwa moja haiwezi kutengeneza aya nzima, tengeneza vipande vya sentensi mbili au takriban herufi arobaini za Kichina ili kuepuka kuwa na sentensi moja kwa kila kipande.
Hamisha muktadha
v4 inasaidia previous_text na next_text. Unapotengeneza vipande kimoja baada ya kingine, pitisha maandishi ya kabla na baada kwa modeli ili kupunguza hisia za usomaji wa kimakanika. README inasisitiza kuwa v3 haiungi mkono sehemu hizi mbili; kuzipitisha kwa v3 kunaweza kusababisha hitilafu, kwa hiyo maombi yanapaswa kujengwa tofauti kulingana na modeli.
Epuka uelekezaji usio sahihi wa lugha
Ikiwa programu inaamua modeli au lugha kulingana na uwiano wa herufi za Kichina, lazima kwanza iondoe lebo za Kiingereza zilizo ndani ya mabano ya mraba. Vinginevyo, sentensi fupi ya Kichina inaweza kutambuliwa kimakosa kuwa ya Kiingereza kwa sababu ina lebo nyingi za Kiingereza. Unapotumia v4, unaweza kuweka modeli ile ile moja kwa moja ili kupunguza ubadilishaji kati ya Kichina na Kiingereza.
Hatua ya tatu: Dhibiti kasi ya usemi
Katika majaribio ya awali, kigezo cha speed cha v4 hakikutoa matokeo yaliyotarajiwa. Ili kupunguza kasi ya v4, ongeza kwanza mapumziko ya asili katika maandishi, kisha tumia ffmpeg kupunguza kasi bila kubadilisha sauti ya juu:
ffmpeg -i input.mp3 -filter:a "atempo=0.9" output.mp3
Unapotumia modeli ya turbo kwa Kiingereza pekee, README inarekodi speed=0.84 kama mwanzo unaofaa, na mapumziko yanaweza kuongezwa kati ya sentensi:
<break time="0.4s"/>
Usikusanye lebo nyingi za mapumziko katika kipande kimoja. Jaribio la awali linapendekeza zisizidi takriban sita; nyingi zaidi zinaweza kufanya matokeo yasiwe thabiti.
Hatua ya nne: Unda mkusanyiko wa busu unaoweza kutumiwa tena
Kwa nini usiandike maneno ya kuiga sauti moja kwa moja
Kuifanya modeli ya kubadilisha maandishi kuwa sauti isome maneno ya kuiga busu mara nyingi husababisha silabi zinazotambulika au hisia ya herufi, badala ya sauti ya asili isiyo ya lugha. Kuandika lebo za vitendo pekee pia kunaweza kugeuka kuwa mguno wa kawaida. Kwa hiyo, mradi wa awali ulitumia mpango wa “kutengeneza kwa wingi kwanza, kisha kukata na kuchuja” ili kuunda mkusanyiko wa nyenzo.
Hatua za kutengeneza
- Tumia timbre ile ile na maandishi yale yale yenye kitendo cha busu, kisha tengeneza mara tano hadi sita kamili. Mtiririko wa awali ulitumia v4 na
stability=0.35. - Tumia utambuzi wa ukimya au zana ya kuhariri sauti kukata vipande visivyo vya lugha vinavyoweza kuwa wagombea kutoka kila tokeo.
- Nunukuu kila kipande kwa Whisper. Vipande vinavyoweza kunukuliwa kuwa herufi au maneno yaliyo wazi viondolewe moja kwa moja.
- Kagua uwiano kati ya nishati tofauti na nishati asili. Katika majaribio ya awali, vipande vinavyoaminika zaidi kwa kawaida vilikuwa juu ya 0.2; vipande vilivyosomwa kama maneno vilikuwa takriban 0.12 hadi 0.16; miguno ya kawaida kwa kawaida ilikuwa chini ya 0.1. Nambari hizi zilitokana na nyenzo maalum na zinafaa tu kama marejeo ya kuanzia.
- Sikiliza mwenyewe nyenzo zilizopita ukaguzi, kisha zipange katika makundi kama busu jepesi, busu la ndani zaidi na mabadiliko ya eneo.
- Wakati wa kuitumia, chagua kwa nasibu kipande ambacho hakijatumika hivi karibuni, na ubadilishe sauti ya juu na kasi kwa kiasi kidogo kisichozidi takriban 3%. Mtiririko wa awali uliruhusu kupunguza kasi pekee, si kuongeza kasi.
Uchujaji wa kiotomatiki hauwezi kuchukua nafasi ya usikilizaji wa mtu. Katika README, kulikuwa na kipande chenye mlio endelevu wa kuzomea; Whisper ilikuwa imenukuu matokeo yanayofanana na Sssss, lakini kutokana na uzembe wa ukaguzi kiliingia katika bidhaa ya mwisho. Mtiririko sahihi unapaswa kukagua kwa pamoja maandishi ya unukuzi, vipimo vya muundo wa mawimbi na hisia halisi ya kusikiliza.
Hatua ya tano: Kamilisha uchanganyaji wa nyimbo mbili kwa sauti halisi ya mazingira
Chagua nyenzo
Mtiririko wa awali ulilinganisha mipango mitatu: kuifanya modeli ya sauti iige, kutumia uzalishaji wa athari za sauti kwa AI, na kutumia rekodi halisi. Hatimaye, uliichagua nyenzo halisi isiyo na sauti ya mtu na yenye leseni ya wazi ya CC0. Kabla ya kutumia rekodi yoyote ya nje, hakiki leseni na hifadhi rekodi ya chanzo.
Usizidishe tu kwa kipimo cha sauti kisichobadilika
Wastani wa sauti na kilele cha rekodi ya mazingira vinaweza kutofautiana sana, na huenda kukawa na vipindi virefu vya ukimya. Kutumia kipimo cha sauti kisichobadilika moja kwa moja kunaweza kufanya sauti isisikike kabisa au ifunike sauti ya mtu. Njia thabiti zaidi ni:
- Kata kwa nasibu madirisha mawili kutoka kwenye nyenzo asili, yenye urefu unaokaribiana na wa sauti ya mtu.
- Pima vilele vya madirisha yote mawili na uchague lenye sauti nyingi zaidi inayofaa.
- Hesabu ongezeko la sauti ili kilele cha sauti ya mazingira kiwe takriban kilele cha sauti ya mtu ukitoa 12 dB.
- Ongeza sekunde 0.5 ya kuingia taratibu kwa sauti ya mazingira.
- Baada ya sauti ya mtu kuisha, hifadhi takriban sekunde 1 ya mwangwi na utumie upunguzaji wa takriban sekunde 1.4.
- Ikiwa nyenzo ya busu tayari ina mwonekano unaofaa, usiongeze sauti ya mazingira tena.
Mfano wa uchanganyaji wa ffmpeg
Tuseme sauti ya mtu ni v.mp3, dirisha la sauti ya mazingira lililokatwa ni w.wav, GAIN ni ongezeko la sauti lililohesabiwa baada ya kuoanisha vilele, na END ni mahali upunguzaji unapoanza:
ffmpeg -i v.mp3 -i w.wav -filter_complex \
"[1:a]volume=GAIN,afade=t=in:st=0:d=0.5,afade=t=out:st=END-1.4:d=1.4[w];\
[0:a]apad=pad_dur=1.0[v];[v][w]amix=inputs=2:duration=first:normalize=0[a]" \
-map "[a]" -c:a libmp3lame -q:a 2 out.mp3
normalize=0 ni muhimu sana. Kulingana na majaribio ya README, ukiiacha, amix inaweza kupunguza wazi sauti ya mtu.
Tenganisha alama za uchanganyaji na lebo za usomaji
Katika hatua ya kuandika, unaweza kutumia lebo kama [low, close, wet] na kutumia wet kama alama ya uchanganyaji wa baadae. Kabla ya kutuma ombi kwa modeli ya sauti, programu lazima iondoe neno hili ili kuzuia modeli kujaribu kuigiza athari ya sauti; baada ya sauti ya mtu kurudi, ongeza nyenzo halisi inayolingana kulingana na alama hiyo. Lebo inayofuata isipojumuisha alama hiyo, sauti ya mazingira inapaswa kupungua taratibu.
Hatua ya sita: Tengeneza wimbo kamili wa sauti
Gawanya hati katika aina tatu za vipande: vipande vya maneno ya kawaida vitumwe kwenye kubadilisha maandishi kuwa sauti; vipande visivyo vya lugha pekee vichaguliwe kutoka kwenye mkusanyiko wa nyenzo; vipande vyenye alama ya sauti ya mazingira vitengeneze kwanza sauti ya mtu, kisha vitekeleze uchanganyaji wa nyimbo mbili.
Sauti kutoka vyanzo tofauti zinaweza kuwa na viwango tofauti vya sampuli; vinapaswa kusawazishwa kabla ya kuunganishwa, kwa mfano zibadilishwe kwanza kuwa 44100 Hz:
ffmpeg -i input.wav -ar 44100 output.wav
Baada ya kusawazisha kiwango cha sampuli, tumia kichujio cha concat cha ffmpeg kuziunganisha kuwa sauti moja kwa mpangilio wa hati. Baada ya kuunganisha, sikiliza kutoka mwanzo hadi mwisho, ukikagua hasa mabadiliko ya ghafla katika timbre, kelele ya chinichini, sauti na upumuaji kati ya vipande.
Hatua ya saba: Kutumia kwa mazungumzo ya wakati halisi
Jambo kuu katika hali ya wakati halisi ni kupunguza muda wa kusubiri huku ukihifadhi muktadha. Unaweza kugawanya kwa lebo zilizo kwenye mistari tofauti, ili sentensi zinazofuata zisizo na lebo mpya zirithi sauti ya sasa. Kusanya sentensi mbili au takriban herufi 40 za Kichina kabla ya kuwasilisha kwa ajili ya kuzalishwa.
- Wakati kipande cha sasa kinachezwa, tengeneza mapema kipande kinachofuata kwa nyuma.
- Wasilisha kwa v4 sentensi iliyotangulia na inayofuata ya kipande cha sasa.
- Vipande vilivyo na sauti zisizo za maneno pekee vichukuliwe moja kwa moja kutoka kwenye kisanduku cha nyenzo, bila kuomba tena ubadilishaji wa maandishi kuwa sauti.
- Washa maikrofoni baada ya sentensi ya mwisho kumaliza kucheza, ili kuzuia sauti kuingiliana.
- Muundo ukishindwa, onyesha maandishi pekee au kaa kimya kwa muda mfupi; usibadilishe kwa ghafla kwenda timbre nyingine.
Kukatika kwa mhusika kunakosababishwa na kubadilisha timbre katikati kwa kawaida huonekana zaidi kuliko kusitisha kwa takriban sekunde moja. Kwa hiyo, kipaumbele kiwe kudumisha sauti thabiti ya mhusika.
Mbinu za hali ya juu za utatuzi
Unda sampuli thabiti ya kulinganisha
Hifadhi rekodi ya msingi ambayo imethibitishwa kuwa ya asili. Kila mara badilisha kipengele kimoja tu kati ya uthabiti, lebo, alama za uandishi, modeli au kasi ya uchakataji wa baadae, kisha linganisha kwa kusikiliza bila kujua toleo na toleo la msingi.
Gawanya lebo za uzalishaji na lebo za uchakataji wa baadae
Modeli ya sauti ipokee tu lebo za mtindo wa sauti inayopaswa kuigiza; sauti za mazingira, aina za nyenzo na nguvu ya uchanganyaji ni metadata ya uchakataji wa baadae na lazima ziondolewe kabla ya kutuma ombi. Hii huzuia modeli kusoma maagizo ya utayarishaji kwa sauti au kujaribu kuiga athari za sauti.
Hifadhi rekodi za matumizi ya hivi karibuni
Weka foleni ya matumizi ya hivi karibuni kwa kisanduku cha nyenzo, kwa mfano epuka vipande kumi vilivyotumiwa hivi karibuni. Hii hupunguza hisia ya kujirudia na huwa thabiti zaidi kuliko kuchagua kwa nasibu kabisa kila mara.
Vizingiti vya kiotomatiki vya ubora
Ukaguzi ufuatao unaweza kuongezwa kwenye mchakato wa kutoa matokeo:
- Je, Whisper imeandika maneno ambayo hayakupaswa kuwepo?
- Je, tofauti ya kilele kati ya sauti ya mtu na sauti ya mazingira iko karibu na thamani inayolengwa?
- Je, kiwango cha sampuli kimesawazishwa?
- Je, mwisho wa sauti iliyotolewa umehifadhi mwangwi wa asili?
- Je, modeli iliyotumiwa katika ombi inaunga mkono vigezo vilivyowasilishwa?
- Je, lebo za Kiingereza zimefutwa kabla ya utambuzi wa lugha?
Gharama, leseni na mipaka ya maudhui
README inarekodi matumizi ya mpango wa Creator, wenye bei ya dola 22 kwa mwezi na kikomo cha takriban herufi 120,000; muundo wa kwanza wa timbre hutumia takriban herufi 3,000, huku matumizi ya kila siku yakitofautiana kutoka mamia hadi herufi 2,000. README pia inataja kuwa v4 wakati huo ilikuwa na ofa ya muda mfupi, kwa hiyo bei, kikomo na njia ya utozaji ya kweli vinapaswa kuthibitishwa kwenye ukurasa rasmi wakati wa matumizi.
Maudhui yote lazima yahusu watu wazima waliothibitishwa waziwazi pekee. Usitumie mipangilio ya wahusika inayoweza kueleweka kuwa ya watoto au maelezo yasiyo wazi kuhusu umri. Mfumo hufanya ukaguzi kwa kutegemea maandishi, na maudhui yanayokiuka masharti yanaweza kusababisha akaunti kusimamishwa.
Unapotumia rekodi za watu wengine, lazima uthibitishe kuwa una ruhusa. Hata kama nyenzo zinaweza kupakuliwa bila malipo, hilo halimaanishi zinaruhusiwa kusambazwa tena au kutumiwa kibiashara. Mchakato wa awali hutumia nyenzo za CC0 pekee na hurekodi chanzo cha kila faili.
Hitimisho
Sauti ya karibu iliyo ya asili haipatikani kwa kurundika lebo kali. Njia ya kuaminika zaidi ni kuifanya modeli ya sauti izingatie mazungumzo, hisia nyepesi na mdundo wa upumuaji, kutenganisha sauti zisizo za maneno kuwa nyenzo zilizochaguliwa baada ya unukuzi na usikilizaji wa kibinadamu, kisha kutumia ffmpeg kulinganisha vilele, kufanya ufifishaji wa kuingia na kutoka, na kuunganisha.
Anza na toleo dogo zaidi: kwanza tengeneza timbre mbili za lugha zilizo thabiti, kisha thibitisha uzalishaji wa sehemu nzima na uwasilishaji wa muktadha, halafu ongeza kisanduku cha nyenzo na sauti za mazingira. Hifadhi sampuli ya msingi katika kila hatua na ubadilishe kigezo kimoja tu; kwa kawaida hii hurahisisha kupata matokeo ya asili, thabiti na yanayoweza kutumiwa tena kuliko kuendelea kuongeza lebo.
