
Loyiha haqida umumiy ma’lumot
Bu ish jarayoni tabiiy va izchil xitoycha-inglizcha intim audio yaratish uchun mo‘ljallangan. Asosiy tamoyil matndan nutqqa modelini barcha tovushlarga taqlid qildirish emas, balki tayyor mahsulotni turli vazifalarga ega audio yo‘laklarga ajratishdir: ElevenLabs replika va nafas olishni, haqiqiy yozuvlar o‘pish tovushlari hamda atrof-muhit shovqinini, ffmpeg kesish, tezlikni o‘zgartirish, aralashtirish va birlashtirishni, Whisper esa sifat nazorati vositasi sifatida xizmat qiladi.
Eng muhim xulosa: nutq modeli faqat “so‘zlar” va gapirish ritmiga singdirilgan nafas olish uchun javob beradi. O‘pish tovushlari, nam tovushlar kabi nolisoniy effektlar alohida tayyorlanib, keyin inson ovozi bilan aralashtirilishi kerak.
README dagi jarayon Mac mini’da bajarilgan, biroq foydalanilgan usullar muayyan Mac modeliga bog‘liq emas. Tizim ElevenLabs API’ni chaqira olsa, ffmpeg’ni ishga tushirsa va Whisper orqali transkripsiya qila olsa, asosiy bosqichlarni takrorlash mumkin.
Asosiy vositalar va vazifalar
- ElevenLabs: Voice Design orqali ovoz tembrini yaratadi va matndan nutqqa modeli yordamida replikalarni hosil qiladi.
- ffmpeg: namuna olish chastotasini birxillashtiradi, nutqni sekinlashtiradi, materialni kesadi, ovozni asta kiritadi yoki pasaytiradi, aralashtiradi va birlashtiradi.
- Whisper: nolisoniy material model tomonidan tanib bo‘ladigan so‘zlarga aylantirib o‘qilgan-o‘qilmaganini tekshiradi.
- Qonuniy ruxsatga ega haqiqiy yozuvlar: alohida muhit tovushlarini taqdim etadi. Asl jarayonda faqat public domain’dagi CC0 materiallardan foydalanilgan va manbalar qayd etilgan.
Boshlashdan oldingi o‘rnatish va tayyorgarlik
1. ElevenLabs’ni tayyorlash
ElevenLabs’da ro‘yxatdan o‘ting va Voice Design hamda matndan nutqqa interfeyslarini chaqira oladigan ma’lumotlarni oling. Amalda kerak bo‘ladigan interfeyslar: POST /v1/text-to-voice/design va POST /v1/text-to-voice.
Birinchi bosqichda voice_description va tinglash matnini yuborib, bir nechta nomzod preview’larini oling; nomzod tanlangach, uning generated_voice_id qiymati orqali rasmiy ovoz tembrini saqlang. Saqlash muvaffaqiyatli tugagach, voice_id ni qayd eting; keyingi barcha aralashtirishlarda shu ID’dan foydalaniladi.
2. ffmpeg’ni o‘rnatish
Terminalda ffmpeg buyrug‘ini bevosita ishga tushirish mumkinligini tekshiring. macOS’da uni keng tarqalgan paket menejeri orqali o‘rnatish mumkin. O‘rnatilgach, quyidagi buyruq bilan tekshiring:
ffmpeg -version
3. Whisper’ni tayyorlash
Bu jarayonda Whisper audio yaratish uchun emas, balki “ovozni tekshiruvchi zond” sifatida ishlatiladi. U o‘pish yoki boshqa nolisoniy bo‘laklarni tekshiradi: agar ular barqaror ravishda so‘zlarga transkripsiya qilinsa, bu odatda model haqiqiy nolisoniy tovush hosil qilmay, taqlidiy so‘zlarni o‘qiganini anglatadi.
4. Material kataloglarini yaratish
Fayllarni vazifasiga ko‘ra oldindan ajratish tavsiya etiladi. Kamida quyidagilar bo‘lsin: inson ovozi chiqishlari, o‘pish nomzodlari, saralashdan o‘tgan o‘pish materiallari, asl muhit yozuvlari, kesilgan muhit oynalari va yakuniy aralashtirish fayllari. Bu tekshirilmagan nomzod materiallarning tayyor mahsulotga bevosita tushib qolishining oldini oladi.
Birinchi bosqich: xitoycha-inglizcha ikki tilli ovoz tembrini loyihalash
Ovozlar kutubxonasidan shunchaki tanlash o‘rniga matnli tavsifdan foydalaning
README testlariga ko‘ra, tayyor xitoycha ovozlar ingliz tilida aksent bilan gapirishi mumkin, Voice Design orqali ikki tilli fonni aniq tasvirlash esa xitoycha va inglizchada tabiiyroq natija olishga yordam beradi. Tavsifda to‘rt turdagi ma’lumot aniq ko‘rsatilishi kerak: ona tilini bilish darajasi, yosh oralig‘i, qahramonlar munosabati yoki obraz xarakteri va maqsadli emotsiya.
Quyida asl jarayonda ishlatilgan tavsif keltirilgan; uni qahramon ehtiyojlariga ko‘ra o‘zgartirish mumkin:
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.
Sinov matni reklama matni bo‘lmasin. Qahramon kundalik hayotda haqiqatan aytadigan gaplarni tanlang va bir xil tavsif uchun bir nechta nomzod yarating. Tinglashda ovozning past yoki yoqimli ekaninigina emas, maqsadli qahramon tabiiy gapirayotgandek eshitilishini birinchi navbatda baholang.
Mos modelni tanlang
- Oddiy suhbat: README v3’ni tavsiya qiladi; u matn mazmunidan kundalik emotsiyalarni ifodalashga mos.
- Jonli qo‘ng‘iroq yoki intim sahna: v4 tavsiya etiladi. U bir xil ovoz tembrida xitoycha, inglizcha va aralash xitoycha-inglizcha matnni yaxshiroq qayta ishlaydi, shuningdek, yengil ovoz ko‘rsatmalarini osonroq taniydi.
- Faqat inglizcha uzun matn: v4 ishlatilmasa,
eleven_turbo_v2_5ni tanlash va inglizchadagi xitoycha aksentni kamaytirish uchunlanguage_code=enni aniq belgilash mumkin.
Ovoz tembri parametrlarini sozlash
README dagi amaliy sinov uchun boshlang‘ich qiymatlar:
stability=0.35: o‘zgaruvchanlik va dramatiklik ancha seziladi.stability=0.5: kundalik gapirishga yaqinroq bo‘lib, “ataylab ijro etish” taassurotini kamaytiradi.similarity_boost=0.8: maqsadli ovoz tembri izchilligini saqlash uchun.style=0.3: asl qaydlarga ko‘ra v3 bu parametrni tanimaydi, shuning uchun v3’ni boshqarishda unga tayanmang.
Nosozliklarni tekshirishda bir vaqtda faqat bitta o‘zgaruvchini almashtiring. Yaxshi baholangan asosiy audio nusxasini saqlab, faqat barqarorlik yoki teglarning bittasini o‘zgartirsangiz, o‘zgarish manbasini aniq aniqlash mumkin.
Ikkinchi bosqich: nafas olishni gapirish ritmiga singdirish
Teglarni faqat ovoz uslubi o‘zgarganda qo‘shing
Har bir gapga teg qo‘shmang. Har olti-o‘n gaplik guruh uchun ikki-uchta yengil teg odatda yetarli; keyingi gaplar avvalgi ovoz uslubini davom ettirishi mumkin. Asl jarayonda ko‘p ishlatilgan so‘zlar: low, close, quiet, soft va unhurried.
[low and close to her ear, unhurried]
……Bu yoqqa kel. Yashirinma.
……Yana biroz yaqinroq. Ha.
[quiet laugh under the breath]
……Nimaga shoshyapsan?
intense, heavy, growl, strained va rough kabi kuchli so‘zlardan foydalanish mutlaqo mumkin emas degani emas, biroq asl sinovlarda ular ovozni bo‘rttirib yuborishi oson bo‘lgan. Ishonchliroq strategiya modeldan zo‘r berib ijro etishni so‘rash emas, balki ovozni pastroq, yaqinroq va sekinroq qilishdir.
Nafas olishni tinish belgilari bilan shakllantiring
heavy breathing ni qayta-qayta yozishdan ko‘ra, gap boshida, oxirida yoki o‘rtasida me’yorida “……” ishlatish tabiiy pauzaga osonroq olib keladi. Har bir guruhda ikki-uchta aniq nafas olish joyini belgilang va ifodani o‘zgartirib turing: yengil nafas chiqarish, gap o‘rtasida to‘xtash, qisqa vaqt nafasni ushlab turish, kulimsirab nafas chiqarish yoki ovozni yarim yo‘lda bosish.
Bir xil nafas olishning ketma-ket takrorlanishi sun’iy takroriylikni oshkor qiladi. Generatsiyadan so‘ng faqat alohida gaplarni emas, butun parchani tinglang.
Imkon qadar butun parchani generatsiya qiling
To‘liq parchani bir marta generatsiya qilganda nafas olish, emotsiya va ovoz balandligining uzluksizligi yaxshiroq saqlanadi. Sakkizta gapni alohida sintez qilib, keyin birlashtirish har bir bo‘lakni qaytadan boshlanganidek eshittiradi. Agar jonli qo‘ng‘iroqda butun parchani generatsiya qilish imkoni bo‘lmasa, bitta gapdan alohida bo‘lak yaratmaslik uchun ikki gap yoki taxminan qirqta xitoycha belgidan iborat bloklardan foydalaning.
Kontekstni uzating
v4 previous_text va next_text ni qo‘llab-quvvatlaydi. Bo‘lakma-bo‘lak generatsiya qilganda oldingi va keyingi matnni modelga uzatish mexanik o‘qish taassurotini kamaytiradi. README v3 bu ikki maydonni qo‘llab-quvvatlamasligini alohida qayd etadi; v3’ga ularni yuborish xatoga olib kelishi mumkin. Shu sababli so‘rovlar modelga qarab alohida tuzilishi kerak.
Noto‘g‘ri til yo‘naltirilishidan saqlaning
Agar dastur model yoki tilni xitoycha belgilar ulushiga qarab tanlasa, avval to‘rtburchak qavs ichidagi inglizcha teglarni olib tashlash kerak. Aks holda, juda qisqa xitoycha gap ko‘p inglizcha teglar borligi sababli inglizcha deb noto‘g‘ri aniqlanishi mumkin. v4 ishlatilganda bir xil modelni saqlab qolish va xitoycha-inglizcha almashuvlarni kamaytirish mumkin.
Uchinchi bosqich: nutq tezligini boshqarish
Asl sinovlarda v4’ning speed parametri kutilgan natijani bermagan. v4’ni sekinlashtirish uchun avval matnga tabiiy pauzalar qo‘shing, keyin ffmpeg yordamida tembrni saqlagan holda sekinlashtiring:
ffmpeg -i input.mp3 -filter:a "atempo=0.9" output.mp3
Faqat inglizcha matn uchun turbo model ishlatilganda README qayd etgan foydalanish mumkin bo‘lgan boshlang‘ich qiymat speed=0.84 bo‘lib, gaplar orasiga pauza qo‘shish mumkin:
<break time="0.4s"/>
Bitta bo‘lakda haddan tashqari ko‘p pauza teglarini jamlamang. Asl sinovlar ko‘pi bilan taxminan oltita tegni tavsiya qiladi; undan ko‘pi chiqishni beqarorlashtirishi mumkin.
To‘rtinchi bosqich: qayta foydalaniladigan o‘pish materiallari to‘plamini yaratish
Nega taqlidiy so‘zlarni bevosita yozmaslik kerak
Matndan nutqqa modeliga o‘pishning taqlidiy so‘zlarini o‘qitish ko‘pincha tabiiy nolisoniy tovush o‘rniga tanib bo‘ladigan bo‘g‘inlar yoki harflarga olib keladi. Faqat harakat teglarini yozish ham oddiy xirgoyiga aylanib qolishi mumkin. Shu sababli asl loyiha “avval ko‘plab generatsiya qilish, keyin kesish va saralash” tamoyiliga asoslangan materiallar to‘plamidan foydalangan.
Tayyorlash bosqichlari
- Bir xil ovoz tembri va o‘pish harakati kiritilgan bir xil matndan foydalanib, to‘liq besh-olti marta generatsiya qiling. Asl jarayonda v4 va
stability=0.35ishlatilgan. - Har bir chiqishdagi nomzod nolisoniy bo‘laklarni ovozsizlikni aniqlash yoki audio tahrirlash vositasi yordamida kesib oling.
- Whisper yordamida har bir bo‘lakni transkripsiya qiling. Aniq belgilar yoki so‘zlarga transkripsiya qilinadigan bo‘laklarni darhol chiqarib tashlang.
- Farq energiyasi va asl energiya nisbatini tekshiring. Asl sinovlarda ishonchliroq bo‘laklar odatda 0.2 dan yuqori; so‘zga aylantirib o‘qilgan bo‘laklar taxminan 0.12–0.16; oddiy xirgoyilar odatda 0.1 dan past bo‘lgan. Bu raqamlar muayyan materialdan olingan va faqat dastlabki yo‘nalish sifatida ishlatilishi kerak.
- Qo‘lda tinglab ma’qullangan materiallarni yengil o‘pish, chuqurroq o‘pish va joylashuv o‘zgarishi kabi toifalarga ajrating.
- Chaqiruv vaqtida yaqinda ishlatilmagan bo‘lakni tasodifiy tanlang va ovoz balandligi hamda tezlikni taxminan 3% dan oshmagan darajada yengil o‘zgartiring. Asl jarayon faqat sekinlashtirishga ruxsat beradi, tezlashtirishga emas.
Avtomatik saralash qo‘lda tinglashning o‘rnini bosa olmaydi. README’da davomli shovqinga ega bo‘lgan bo‘lak uchragan: Whisper uni Sssss ga o‘xshash natija sifatida transkripsiya qilgan, biroq tekshiruvdagi e’tiborsizlik sababli u tayyor mahsulotga kirib qolgan. To‘g‘ri jarayon transkripsiya matni, to‘lqin shakli ko‘rsatkichlari va haqiqiy tinglash taassurotini birgalikda tekshirishi kerak.
Beshinchi bosqich: haqiqiy muhit tovushlari bilan ikki yo‘lakli aralashtirish
Materiallarni tanlash
Asl jarayon uchta variantni solishtirgan: ovoz modeliga taqlid qildirish, AI yordamida ovoz effekti yaratish va haqiqiy yozuvlardan foydalanish. Yakunda inson ovozisiz, litsenziyasi aniq bo‘lgan CC0 haqiqiy materiallar tanlangan. Har qanday tashqi yozuvdan foydalanishdan oldin litsenziyani tekshiring va manba ma’lumotlarini saqlang.
Doimiy ovoz ko‘paytirgichni bevosita qo‘llamang
Muhit yozuvlarining o‘rtacha balandligi va cho‘qqilari keskin farq qilishi, shuningdek, uzoq jimlik qismlarini o‘z ichiga olishi mumkin. Doimiy ovoz koeffitsiyentini qo‘llash tovushning umuman eshitilmasligi yoki inson ovozini bosib ketishiga olib keladi. Barqarorroq usul quyidagicha:
- Asl materialdan inson ovoziga yaqin uzunlikdagi ikkita oynani tasodifiy kesib oling.
- Ikkala oynaning cho‘qqisini o‘lchang va foydali tovush ko‘proq bo‘lganini tanlang.
- Muhit tovushi cho‘qqisi joriy inson ovozi cho‘qqisidan 12 dB past bo‘lishi uchun kuchaytirishni hisoblang.
- Muhit tovushiga 0.5 soniyalik asta kirish effektini qo‘shing.
- Inson ovozi tugagach, taxminan 1 soniyalik davomni qoldiring va taxminan 1.4 soniyalik asta pasayishdan foydalaning.
- O‘pish materialining o‘zida kerakli tekstura bo‘lsa, qo‘shimcha muhit tovushini ustma-ust qo‘shmang.
ffmpeg’da aralashtirish namunasi
Inson ovozi v.mp3, oldindan kesilgan muhit tovushi oynasi w.wav, GAIN cho‘qqilarni moslashtirish orqali hisoblangan kuchaytirish, END esa pasayish boshlanadigan joy bo‘lsin:
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 juda muhim. README testlariga ko‘ra, u qoldirilsa, amix inson ovozini sezilarli darajada pasaytirishi mumkin.
Aralashtirish teglarini o‘qish teglaridan ajrating
Yozish bosqichida [low, close, wet] kabi teglardan foydalanish va wet ni keyingi aralashtirish belgisi sifatida belgilash mumkin. Dastur ovoz modeliga so‘rov yuborishdan oldin bu so‘zni olib tashlashi shart, aks holda model ovoz effektini ijro etishga urinishi mumkin; inson ovozi qaytgach esa teg asosida tegishli haqiqiy material ustma-ust qo‘shiladi. Keyingi tegda bu belgi bo‘lmasa, muhit tovushi asta pasaytirilishi kerak.
Oltinchi bosqich: to‘liq audio yo‘lakni tayyorlash
Skriptni uch turdagi blokka ajrating: oddiy replikalar matndan nutqqa yuboriladi; faqat nolisoniy bloklar materiallar to‘plamidan tanlanadi; muhit tovushi belgisi bor bloklar avval inson ovozini yaratadi, keyin ikki yo‘lakli aralashtirishdan o‘tkaziladi.
Turli manbalardagi audiolar turlicha namuna olish chastotasiga ega bo‘lishi mumkin, shuning uchun ularni birlashtirishdan oldin bir xil qiymatga keltirish kerak, masalan, avval 44100 Hz ga o‘zgartiring:
ffmpeg -i input.wav -ar 44100 output.wav
Namuna olish chastotasi bir xil qilingach, ffmpeg’ning concat filtridan foydalanib, ularni skript tartibida bitta audio faylga birlashtiring. Birlashtirish tugagach, boshidan oxirigacha tinglab chiqing. Ayniqsa bloklar orasida tembr, fon shovqini, balandlik va nafas olishning keskin o‘zgarishiga e’tibor bering.
Yettinchi qadam: real vaqt rejimidagi suhbatlar uchun
Real vaqt rejimida asosiy maqsad kutish vaqtini qisqartirish va kontekstni saqlab qolishdir. Mustaqil qatorda yozilgan teglar asosida bo‘laklarga ajrating, shunda yangi tegi bo‘lmagan keyingi gaplar joriy ovoz uslubini davom ettiradi. Ikki gap yoki taxminan qirqta xitoycha belgi yig‘ilgach, generatsiyani yuboring.
- Joriy blok ijro etilayotganda, keyingi blokni fonda oldindan yarating.
- v4 ga joriy blokning oldingi va keyingi gaplarini uzating.
- Sof noverbal bloklarni to‘g‘ridan-to‘g‘ri materiallar qutisidan oling, ular uchun matndan nutqqa qayta so‘rov yubormang.
- Oxirgi gap ijro etilgachgina mikrofonni yoqing, shunda tovushlar bir-birini bosib ketmaydi.
- Agar sintez muvaffaqiyatsiz tugasa, faqat matnni ko‘rsating yoki qisqa vaqt jim turing; boshqa ovoz tembriga vaqtincha o‘tmang.
Jarayon o‘rtasida ovoz tembrini almashtirish natijasidagi personaj uzilishi odatda taxminan bir soniyalik pauzadan ko‘ra ko‘proq seziladi. Shuning uchun avvalo personaj ovozining izchilligini saqlash kerak.
Ilg‘or nosozliklarni tuzatish usullari
Doimiy taqqoslash namunasini yarating
Tabiiyligi tasdiqlangan bitta asosiy audio yozuvni saqlang. Har safar barqarorlik, teglar, tinish belgilari, model yoki keyingi ishlov berish tezligidan faqat bittasini o‘zgartiring va natijani asosiy versiya bilan ko‘r-ko‘rona tinglab taqqoslang.
Generatsiya teglari va keyingi ishlov teglari qatlamlarini ajrating
Nutq modeli faqat ijro etishi kerak bo‘lgan ovoz uslubi teglarini qabul qilsin; atrof-muhit tovushlari, material toifalari va miks intensivligi keyingi ishlov metama’lumotlariga kiradi va so‘rov yuborishdan oldin olib tashlanishi shart. Bu model ishlab chiqarish ko‘rsatmalarini o‘qib yuborishi yoki tovush effektlariga taqlid qilishga urinishi oldini oladi.
Yaqinda ishlatilgan yozuvlarni saqlang
Materiallar qutisi uchun yaqinda ishlatilganlar navbatini yuriting, masalan, yaqinda ishlatilgan o‘nta fragmentni chetlab o‘ting. Bu takroriylik hissini kamaytiradi va har safar butunlay tasodifiy tanlashga qaraganda barqarorroq ishlaydi.
Sifatning avtomatik chegaralari
Quyidagi tekshiruvlarni chiqarish jarayoniga qo‘shish mumkin:
- Whisper bo‘lmasligi kerak bo‘lgan so‘zlarni transkripsiya qilib qo‘ymadimi.
- Inson ovozi va atrof-muhit tovushlari cho‘qqi darajalari farqi maqsadli qiymatga yaqinmi.
- Namuna olish chastotasi bir xilmi.
- Chiqish oxirida tabiiy so‘nggi tovush saqlanganmi.
- So‘rovda ishlatilayotgan model uzatilgan parametrlarni qo‘llab-quvvatlaydimi.
- Tilni aniqlashdan oldin inglizcha teglar o‘chirildimi.
Xarajat, litsenziya va kontent chegaralari
README hujjatida Creator rejasi, oyiga 22 dollar va taxminan 120000 ta belgi limiti qayd etilgan; ovoz tembrini dastlabki loyihalash taxminan uch ming belgini sarflaydi, kundalik foydalanish esa bir necha yuzdan ikki mingtagacha belgini tashkil etadi. README’da v4 uchun o‘sha paytda cheklangan muddatli chegirma mavjudligi ham aytilgan, shuning uchun amaldagi narx, limit va hisob-kitob usuli foydalanish paytidagi rasmiy sahifaga asoslanishi kerak.
Barcha kontent faqat aniq voyaga yetgan shaxslar haqida bo‘lishi kerak. Voyaga yetmagan deb tushunilishi mumkin bo‘lgan personaj sozlamalari yoki noaniq yosh ifodalaridan foydalanmang. Platforma matn asosida tekshiruv o‘tkazadi, qoidabuzarlik esa akkauntning o‘chirilishiga olib kelishi mumkin.
Boshqalarning yozuvlaridan foydalanganda ruxsatni tasdiqlash shart. Materialni bepul yuklab olish mumkinligi uni qayta tarqatish yoki tijoriy maqsadda ishlatishga ruxsat berilganini anglatmaydi. Dastlabki jarayonda faqat CC0 materiallaridan foydalanilgan va har bir fayl manbasi qayd etilgan.
Xulosa
Tabiiy, yaqin ohangdagi nutq kuchli teglarni haddan tashqari ko‘paytirish orqali hosil qilinmaydi. Ishonchliroq usul — nutq modelini replikalar, yengil hissiyot va nafas olish ritmiga yo‘naltirish, noverbal tovushlarni transkripsiya va inson tinglovi orqali saralangan materiallarga ajratish, so‘ngra cho‘qqi darajalarini moslashtirish, ovozni asta-sekin kuchaytirish va pasaytirish hamda birlashtirishni ffmpeg’ga topshirishdir.
Minimal versiyadan boshlang: avval barqaror ikki tilli ovoz tembrini yarating, keyin butun parchani generatsiya qilish va kontekst uzatilishini tekshiring, undan so‘ng materiallar qutisi va atrof-muhit tovushlarini qo‘shing. Har bir bosqichda asosiy namunani saqlab, faqat bitta o‘zgaruvchini sozlash odatda teglarni tinimsiz ko‘paytirishga qaraganda tabiiy, izchil va qayta foydalanish mumkin bo‘lgan natijaga erishishni osonlashtiradi.
