
O‘z kompyuteringizda tinglay oladigan, gapira oladigan, lab harakatlari sinxronlashgan va siz bilan suhbatlasha oladigan AI raqamli insonni hech qanday AI vositalarisiz yoki qimmat obuna to‘lovlarisiz yaratmoqchimisiz? Nutqni tanish, mahalliy katta til modeli, ovoz sintezi va lab harakatlarini sinxronlashni birlashtirish orqali kompyuterning o‘zida ishlaydigan real vaqtli interaktiv tizimga ega bo‘lish mumkin.
Ushbu maqola apparat tayyorlashdan boshlanadi va Windows + WSL2 muhitida to‘liq o‘rnatish jarayonini ko‘rsatadi. Yakuniy natija: veb-sahifada moslashtirilgan raqamli inson ko‘rsatiladi, biz mikrofon orqali AI raqamli inson bilan suhbatlashamiz, AI raqamli inson esa siz klonlagan ovoz tembrida javob beradi.
1. Tizimning to‘liq ishlash jarayoni
Ushbu yechim bitta model tomonidan bajarilmaydi, balki bir nechta komponentdan iborat:

llama.cpp mahalliy til modelini ishga tushiradi; faster-whisper foydalanuvchi nutqini matnga aylantiradi; Qwen3-TTS mos yozuv asosida javob ovozini yaratadi; LiveTalking va Wav2Lip esa ovozni unga mos lab harakatlariga aylantiradi.
2. Apparat talablari va videoxotira hisob-kitobi
Minimal konfiguratsiya:
NVIDIA videokartasi: 8GB videoxotira
Tezkor xotira: 16GB
Bo‘sh disk maydoni: kamida 60GB
Tizim: Windows 10/11, WSL2 qo‘llab-quvvatlashi bilan
Tavsiya etiladigan konfiguratsiya:
NVIDIA videokartasi: 16GB yoki undan ko‘p videoxotira
Tezkor xotira: 32GB yoki undan ko‘p
Model va WSL fayllarini saqlash uchun SSD ishlatish tavsiya etiladi
Qwen3 14B kvantlangan modelini misol sifatida olsak, videoxotira taxminan quyidagicha taqsimlanadi:
Komponent|Taxminiy videoxotira sarfi
Qwen3-14B Q4_K_M|taxminan 9GB
faster-whisper large-v3|taxminan 3GB
Qwen3-TTS 1.7B|taxminan 4GB
Wav2Lip 256|taxminan 1.3GB
Jami|taxminan 17GB
24GB videoxotirali videokarta ushbu kombinatsiyani ancha bemalol ishga tushiradi. 16GB videoxotirada 8B modeliga o‘tib, kontekst uzunligini kamaytirish mumkin; taxminan 8GB videoxotirada esa 4B model va o‘rta darajadagi nutqni tanish modelidan boshlash tavsiya etiladi.
3. WSL2 tarmog‘i va xotirasini sozlash
1. Avval Windows foydalanuvchi katalogida .wslconfig faylini yarating:
C:\Users\foydalanuvchi_nomingiz\.wslconfig2. Quyidagi tarkibni kiriting:
[wsl2]
memory=32GB
networkingMode=mirrored
[experimental]
hostAddressLoopback=truememory qiymatini haqiqiy xotiraga qarab o‘zgartirish mumkin. Odatda fizik xotiraning yarmidan uchdan to‘rt qismigacha ajratish kifoya. hostAddressLoopback=true Windows va WSL o‘rtasidagi mahalliy WebRTC aloqasi uchun ayniqsa muhim. U bo‘lmasa, keyingi WebRTC ulanishi doimo ishlamaydi, xatolik sababi esa umuman ko‘rinmaydi: brauzerda JSON 解析 xatosi ko‘rsatiladi, ICE nomzodlar ro‘yxati esa bo‘sh bo‘ladi.
3. O‘zgartirgandan so‘ng PowerShell oynasida quyidagini bajaring:
wsl --shutdownWSL’ga qayta kirgandan keyin sozlamalar kuchga kiradi.
4. Windows tomonida mahalliy katta til modelini ishga tushirish
1. llama.cpp ni tayyorlash
Windows uchun mos llama.cpp ni yuklab oling va masalan quyidagi kabi doimiy katalogga arxivdan chiqaring:
E:\llama.cppBarqaror versiyani yuklab olish manzili: https://pan.quark.cn/s/0073852e4042
2. Videoxotiraga qarab model tanlash
Videoxotira|Tavsiya etiladigan model|Yuklab olish manzili
16GB dan yuqori|Qwen3-14B-Instruct Q4_K_M|https://pan.quark.cn/s/f48c2144ac71
8–16GB|Qwen3-8B GGUF Q4_K_M|https://pan.quark.cn/s/78b8643f1be3
8GB dan kam|Qwen3-4B GGUF|https://pan.quark.cn/s/fd588898ccbf
Yuklab olingan .gguf faylini quyidagi katalogga joylashtiring:
E:\llama.cpp\models3. Inferensiya xizmatini ishga tushirish
Windows buyruqlar satrida quyidagini bajaring:
cd /d E:\llama.cpp
llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf ^
-np 1 -c 8192 -fa on --temp 1.0 --top-p 0.95 ^
--host 0.0.0.0 --port 8090Parametrlar vazifasi:
host 0.0.0.0 :WSL’ga Windows tomonidagi model xizmatiga kirishga ruxsat beradi;
c 8192 :kontekst uzunligini belgilaydi, qisqa suhbatlar uchun yetarli;
temp 1.0 :javoblarni kamroq qolipli qiladi;
port 8090 :xizmat portini belgilaydi.
Bu buyruq oynasi doim ishlab turishi kerak. Agar port bandligi haqida xabar chiqsa, ammo odatiy tekshiruvda jarayon ko‘rinmasa, Hyper-V ushbu portni oldindan band qilgan-qilmaganini tekshiring:
netsh interface ipv4 show excludedportrange protocol=tcpTo‘qnashuv aniqlansa, eng oson yo‘l model xizmati va chaqiruv skriptidagi portni bir vaqtda o‘zgartirishdir.
5. Raqamli inson fon tasviri va videosini tayyorlash
1. Avval o‘zingizga yoqadigan raqamli inson rasmini yarating
Raqamli inson rasmi faqat “chiroyli” bo‘lishi emas, keyingi veb-sahifa joylashuvi va lab harakatlarini yaratish uchun ham yetarli bo‘sh joyga ega bo‘lishi kerak. Ishonchli kompozitsiya quyidagicha:
Kadr nisbati 16:9 bo‘lsin;
Qahramon o‘ng tomondagi uchdan bir qismda joylashsin;
Chap tomonda interaktiv yorug‘lik shari va subtitrlar uchun katta qoramtir bo‘sh joy qoldirilsin;
Lablar tabiiy yopiq bo‘lsin, tishlar ko‘rinmasin;
Qo‘llar og‘iz, iyak va yuz konturini to‘smasin;
Lab sohasi biroz xiralashganda g‘alati ko‘rinishni kamaytirish uchun qoramtir yon chiroq ishlatilsin.
Quyidagi prompt g‘oyasidan foydalanib, qahramon, kiyim va sahnani o‘zingizga moslang:
Kinematik, past yorug‘likdagi yon tomondan portret, kadrning o‘ng tomonida o‘tirgan voyaga yetgan ayol, yumshoq kontur nuri,
chap tomonda katta qoramtir bo‘sh makon, tabiiy ifoda, lablar yopiq, kamera qimirlamaydi,
haqiqiy teri teksturasi, 16:9 gorizontal kompozitsiya.Negative prompt’ga quyidagilarni qo‘shish mumkin: og‘iz ochiq, tishlar ko‘rinishi, qahramon markazda, yorqin va tartibsiz fon, qo‘l og‘izni to‘sishi, matn, suv belgisi, plastik teri, multfilm uslubi.
2. ComfyUI + Wan2.2 yordamida 5 soniyalik raqamli inson videosini yaratish
ComfyUI ni yuklab olib o‘rnating. Uni ochgach, Wan2.2 ning rasmdan video yaratish workflow’ini tanlang va fon tasvirini birinchi kadr sifatida belgilang. Birinchi marta quyidagi ehtiyotkor parametrlar tavsiya etiladi:
Parametr|Tavsiya etiladigan qiymat
Ruxsat|Fon tasviri nisbatiga mos; asl qo‘llanma misolida 704 × 896
Davomiylik|5 soniya
Kadrlar tezligi|25 fps
Prompt Enhance|O‘chirilgan
ComfyUI yuklab olish manzili:https://pan.quark.cn/s/bb9d21f1e724
Prompt’da faqat harakatni tasvirlang, qahramon tashqi ko‘rinishini qayta tasvirlamang. Masalan:
Qahramon o‘z joyida qoladi, faqat biroz nafas oladi, bir marta sekin ko‘z qisadi, boshi juda kichik amplitudada tabiiy harakatlanib, boshlang‘ich holatiga qaytadi,
lablar doimo yopiq, kamera o‘zgarmaydi, yaqinlashtirish, uzoqlashtirish va burish yo‘q.Eksport qilingan fayl nomini quyidagicha qo‘ying: idle.mp4
Haqiqiy gapirish paytidagi lab harakatlari Wav2Lip tomonidan real vaqtda yaratilgani uchun “gapiryapti”, “tinglayapti” kabi bir nechta videolarni qo‘shimcha tayyorlash shart emas.

Quyida bir nechta keng tarqalgan xatolar:
Prompt’ni kuchaytirishni yoqmang, prompt_enhance ni o‘chiring, aks holda model qahramon yoki sahnani qayta yaratishi mumkin;
Chiqish nisbati kirish rasmi nisbatiga aynan mos bo‘lishi kerak. Agar 16:9 gorizontal fon tasviridan foydalansangiz, tasvir cho‘zilib ketmasligi yoki qahramon kesilib qolmasligi uchun workflow qo‘llab-quvvatlaydigan gorizontal o‘lchamga o‘ting;
Prompt’da faqat harakatni yozing, tashqi ko‘rinishni qayta-qayta tasvirlash qahramonning o‘zgarib ketishiga olib kelishi mumkin;
5 soniyalik video kutish holatida aylantirish uchun yetarli, videoni sababsiz uzaytirish takrorlanish yoki deformatsiya ehtimolini oshiradi.
6. Mos yozuv ovozini yozib olish (ovoz klonlash)
Qwen3-TTS mos yozuv asosida ovoz tembri va gapirish holatiga taqlid qiladi. 5–15 soniyalik ovoz yozish tavsiya etiladi. Talablar:
Faqat bir kishi gapirsin;
Muhit tinch bo‘lsin, musiqa va sezilarli aks-sado bo‘lmasin;
Gapirish tezligi tabiiy, kayfiyat esa klonlanishi kutilayotgan uslubga mos bo‘lsin;
So‘zma-so‘z aniq transkriptni ham saqlang.
Yozuv tugagach, faylni ( wav yoki mp3 formatida) eksport qiling, ish stolidagi AI papkasiga joylashtiring va nomini quyidagicha qo‘ying: ref.wav. Yozuvda aytilgan gaplarni so‘zma-so‘z yozib oling, keyin uni konfiguratsiyaga kiritasiz. E’tibor bering, hissiyot ham klonlanadi, shuning uchun yozuv vaqtida o‘zingiz xohlagan ohangdan foydalanishingiz mumkin.
Mos yozuv audio fayli uchun “Bir bosishda o‘rnatish paketi”ni yuklab oling. Ushbu skriptlar ovozli suhbat muhitini o‘rnatish, barcha xizmatlarni ishga tushirish va audio-video sinxronligini qayta ishlash uchun ishlatiladi. Skriptlar loyiha versiyasiga qarab o‘zgarishi mumkinligi sababli, foydalanishdan oldin yuklab olish manzillari, portlar va model nomlarini tezda tekshirib chiqqan ma’qul. Paket tarkibi:
Fayl|Vazifasi
install-voice.sh|Ovozli suhbat qismini bir bosishda o‘rnatish
start-voice.sh|Ovoz xizmatini ishga tushirish / to‘xtatish / loglar
start-livetalking.sh|Lab harakatlari xizmatini ishga tushirish / to‘xtatish
avatar-sync.js|Audio uzatish + raqamli inson fon qatlami
wav2lip256.pth|Lab harakatlari modeli og‘irliklari
wav2lip256_avatar1.tar.gz|Rasmiy namuna qahramoni (zanjirni tekshirish uchun)
Bir bosishda o‘rnatish paketini yuklab olish manzili: https://pan.quark.cn/s/d4fc5bfc88eb
7. Fayllarni tartibga solish
Oxirida 5 soniyalik raqamli inson videosi idle.mp4 va audio fayl ref.wav`ni ish stolidagi AI papkasiga joylashtiring. Yakuniy katalog tuzilmasi:
C:\Users\foydalanuvchi_nomingiz\Desktop\AI\
├── install-voice.sh
├── start-voice.sh
├── start-livetalking.sh
├── avatar-sync.js
├── wav2lip256.pth
├── wav2lip256_avatar1.tar.gz
├── idle.mp4
└── ref.wav8. WSL2 ni o‘rnatish (Ubuntu 24.04 va GPU qo‘llab-quvvatlashi)
PowerShell’ni administrator sifatida oching:
wsl --update
wsl --install -d Ubuntu-24.04O‘rnatish tugagach, kompyuterni qayta ishga tushiring, shunda birinchi bosqichdagi .wslconfig kuchga kiradi. Qayta ishga tushirgandan so‘ng Ubuntu terminalini oching, foydalanuvchi nomi va parolni sozlang, videokarta to‘g‘ridan-to‘g‘ri ulanishini tekshiring:
nvidia-smiAgar videokarta modeli va drayver ma’lumotlari ko‘rinsa, GPU orqali uzatish to‘g‘ri ishlayotgan bo‘ladi.
WSL ichida videokarta drayverini qayta o‘rnatmang. Videokarta drayveri faqat Windows’ga o‘rnatiladi, WSL esa host tomonidan taqdim etilgan CUDA uzatishidan foydalanadi; WSL ichida drayverni qayta o‘rnatish libcuda.so faylini ustiga yozib, GPU’ning ishlamasligiga olib kelishi mumkin.
9. O‘rnatish paketini WSL’ga nusxalash
Ubuntu terminalida yo‘lni o‘z Windows foydalanuvchi nomingizga almashtiring:
#Nusxalash (yo‘lni o‘z foydalanuvchi nomingizga almashtiring):
mkdir -p ~/setup
cp -r "/mnt/c/Users/foydalanuvchi_nomingiz/Desktop/AI/." ~/setup/
cd ~/setup
ls -la
#Qator oxirlarini o‘zgartirish:
sudo apt update
sudo apt install -y dos2unix
dos2unix *.sh
#Bajarish huquqini berish:
chmod +x *.shQator oxirlarini nima uchun o‘zgartirish kerak: Windows matn fayllarida odatda CRLF qator tugashi ishlatiladi. O‘zgartirilmasa, bash^M yoki bad interpreter xatolari yuzaga kelishi mumkin, ko‘pchilik aynan shu bosqichda qiyinchilikka duch keladi.
Ko‘p sonli Python fayllarini to‘g‘ridan-to‘g‘ri /mnt/c ichida ishga tushirish odatda sekinroq bo‘ladi va ruxsat muammolari ham uchrashi mumkin. Ularni Linux uy katalogiga nusxalash barqarorroq ishlaydi.
O‘n. Ovozli suhbat modulini o‘rnatish va sinash
1. O‘rnatish skriptini ishga tushiring
cd ~/setup
./install-voice.shO‘rnatish jarayonida Python muhiti yaratiladi hamda ovoz faolligini aniqlash, faster-whisper, Qwen3-TTS va frontend komponentlari tayyorlanadi. Tarmoq va disk tezligiga qarab, bu jarayon o‘nlab daqiqa davom etishi mumkin.
2. Referens audio formatini birxillashtiring
ffmpeg -i ~/setup/ref.wav -ac 1 -ar 16000 -c:a pcm_s16le ~/s2s/ref.wav
#Formatni tasdiqlash: pcm_s16le / 16000 / 1 kanal bo‘lishi shart:
ffprobe -v error \
-show_entries stream=sample_rate,channels,codec_name \
-show_entries format=duration \
-of default=nw=1 ~/s2s/ref.wavTekshiruv natijasi quyidagilarga mos kelishi kerak:
Kodlash: pcm_s16le
Namuna olish tezligi: 16000
Kanal: mono
3. Referens audioning so‘zma-so‘z matnini kiriting
Quyidagi matnni yozuvda amalda aytilgan mazmunga almashtiring:
sed -i 's|^REF_TEXT=.*|REF_TEXT="Bu yerga yozuv bilan to‘liq bir xil so‘zma-so‘z matnni kiriting"|' ~/setup/start-voice.sh
grep -n "^REF_TEXT=" ~/setup/start-voice.shSo‘zma-so‘z matnda so‘zlarning tushib qolishi, xatolar yoki tinish belgilaridagi katta farqlar klonlash sifatini pasaytiradi.
4. Birinchi marta ishga tushirish
cd ~/setup
./start-voice.shKeyin Windows brauzerida quyidagi manzilni oching:
http://localhost:7860/Brauzerga mikrofondan foydalanishga ruxsat bering va sahifadagi interaktiv tugma orqali sinovdan o‘tkazing. Birinchi marta sozlamalarga kirib, NOISE GATE parametrini eng chap holatga surish yoki uni butunlay o‘chirish tavsiya etiladi. Aks holda oddiy nutq ham fon shovqini sifatida filtrlanishi mumkin.

O‘n bir. LiveTalking (lab sinxronizatsiyasi) va Wav2Lip’ni o‘rnatish
Yangi Ubuntu terminalini oching, WSL’ga kiring va buyruqlarni ketma-ket bajaring:
mkdir -p ~/livetalking
cd ~/livetalking
git clone https://github.com/lipku/LiveTalking.git
cd LiveTalking
uv venv --python 3.10 .venv-lt
source .venv-lt/bin/activate
uv pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 \
--index-url https://download.pytorch.org/whl/cu124
uv pip install -r requirements.txt
sudo apt install -y ffmpeg libgl1 libglib2.0-0Agar tizimda uv hali o‘rnatilmagan bo‘lsa, avval uv’ning rasmiy o‘rnatish ko‘rsatmalariga muvofiq uni o‘rnating, so‘ng yuqoridagi buyruqlarni qayta bajaring.
Lab modeli va standart raqamli insonni joylashtiring:
cd ~/livetalking/LiveTalking
# E'tibor: nomini wav2lip.pth ga o‘zgartirish kerak
cp ~/setup/wav2lip256.pth models/wav2lip.pth
# Rasmiy namunaviy obraz
tar -xzf ~/setup/wav2lip256_avatar1.tar.gz -C data/avatars/
# Tasdiqlash
ls -lh models/ && ls data/avatars/E’tibor: manba fayl wav2lip256.pth deb nomlangan bo‘lsa ham, nusxalangandan keyin uning nomi wav2lip.pth bo‘lishi shart, chunki loyiha og‘irliklarni sukut bo‘yicha aynan shu fayl nomi orqali qidiradi.
Avval rasmiy namunaviy raqamli insonni sinang:
cd ~/livetalking/LiveTalking
source .venv-lt/bin/activate
python app.py --transport webrtc --model wav2lip \
--avatar_id wav2lip256_avatar1 \
--stun 'stun:stun.l.google.com:19302'Brauzerda quyidagi manzilni oching:
http://localhost:8010/index.htmlUlanish muvaffaqiyatli bo‘lgach, xitoycha matn yuboring. Ovoz, obraz harakati va mos lab harakati bir vaqtda paydo bo‘lsa, bu bosqich to‘liq ishladi deb hisoblanadi.
Terminal jurnalidagi inferfps va finalfps qiymatlari real vaqt ishlashini kuzatish uchun ishlatiladi. Odatda ikkalasi ham taxminan 25 yoki undan yuqori bo‘lishi ma’qul. Agar inferfps sezilarli darajada past bo‘lsa, model yuklamasini kamaytirish yoki yengilroq konfiguratsiyaga o‘tish kerak.
Internetdagi qo‘llanmalarda ko‘pincha MuseTalk tavsiya qilinadi. Uning tasvir sifati yaxshiroq bo‘lsa-da, ushbu AI raqamli inson uchun tasvir talablari yuqori emas. Wav2Lip atigi taxminan 1.3GB videoxotira ishlatadi; xira yorug‘lik, yon tomondan ko‘rinish va kadrda katta joy egallamaydigan obrazlar uchun biz nisbatan kam xarajat bilan maqbul natijaga erisha olamiz, MuseTalk esa 12G videoxotira ishlatadi. Shu bilan birga, to‘liq lokal joylashtirishda stun ham kerak emas, biroq bo‘sh satr yubormang, aks holda STUN manzili formati xato bo‘lgani uchun WebRTC ishga tushmay qolishi mumkin.
O‘n ikki. Videoni o‘zingizning raqamli inson obraziingizga aylantirish
LiveTalking ishlayotgan paytda quyidagi manzilni oching:
http://localhost:8010/avatar.htmlGeneratsiya vazifasini quyidagi tarzda yuboring:
Algoritm: Wav2Lip
Avatar ID: wav2lip256_myavatar (wav2lip256_ prefiksini saqlang)
Video fayli: avval yaratilgan idle.mp4
Holat COMPLETED ga o‘zgargach, o‘zingizning raqamli insoningizni ishga tushiring:
cd ~/setup
AVATAR_ID=wav2lip256_myavatar ./start-livetalking.shAgar keyinchalik u sukut bo‘yicha ishga tushishini istasangiz, skriptdagi Avatar ID’ni o‘zgartiring:
sed -i 's/wav2lip256_lingdu/wav2lip256_myavatar/' ~/setup/start-livetalking.shAgar generatsiyadan keyin og‘iz atrofida yaqqol yirtilishlar paydo bo‘lsa, avvalo kutish videosida qo‘l, soch yoki kiyim yoqasi og‘iz va iyakni tez-tez to‘sib qo‘ymayotganini tekshiring. Modelni darhol almashtirishga shoshilmang.
O‘n uch. To‘liq tizimni to‘g‘ri ketma-ketlikda ishga tushirish
Butun xizmatlar to‘plami uchun uchta terminal oynasi kerak.

Birinchi oyna: Windows’dagi lokal katta til modeli
cd /d E:\llama.cpp
llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf ^
-np 1 -c 8192 -fa on --temp 1.0 --top-p 0.95 ^
--host 0.0.0.0 --port 8090Ikkinchi oyna: WSL lab xizmati
cd ~/setup
./start-livetalking.shUchinchi oyna: WSL ovoz xizmati
cd ~/setup
./start-voice.shOxirida http://localhost:7860/ manzilini oching, zarur bo‘lsa Ctrl + F5 tugmalari bilan majburiy yangilang. Avval sahifani bosib, raqamli inson ulanishini o‘rnating, so‘ng gapirishni boshlash uchun ovozli muloqot tugmasini bosing.
Xizmatlarni to‘xtatish uchun quyidagilarni bajaring:
./start-voice.sh stop
./start-livetalking.sh stopWindows’dagi llama.cpp oynasini Ctrl + C tugmalari bilan to‘g‘ridan-to‘g‘ri to‘xtatish mumkin.
O‘n to‘rt. Tabiiy va kechikishi past persona sozlash
Veb-sahifadagi Settings → INSTRUCTIONS bo‘limiga persona tavsifini kiriting. Faqat “muloyim, quvnoq, tushunadigan” kabi sifatlarni sanab o‘tirmang. Model javob berish ritmini o‘rganishi uchun bir nechta qisqa dialog namunasini ham kiritgan ma’qul.
Quyidagi kabi cheklovlardan foydalanish mumkin:
Siz tabiiy va do‘stona virtual hamrohsiz. Og‘zaki uslubda gapiring, har safar faqat ikki yoki uchta jumla bilan javob bering.
Markdown, ro‘yxatlar, raqamlash, emojilar va sahna harakatlari tasviridan foydalanmang.
Foydalanuvchi savolini takrorlamang, to‘g‘ridan-to‘g‘ri javob bering. Noaniq ma’lumotlarga duch kelsangiz, buni ochiq ayting.
Namuna:
Foydalanuvchi: Bugun biroz charchadim.
Yordamchi: Unda avval o‘zingizni to‘liq ishlashga majburlamang. Suv iching, o‘n daqiqa dam oling, keyin buni asta-sekin hal qilamiz.Qisqa javoblar nafaqat haqiqiy suhbatga ko‘proq o‘xshaydi, balki to‘liq ovoz sintezini kutish vaqtini ham sezilarli qisqartiradi. Markdown va emojilarni o‘chirish TTS belgilar yoki formatlash teglarini o‘qib yubormasligi uchun kerak. /no_think keraksiz uzoq fikrlash chiqishini o‘chiradi va birinchi jumlagacha bo‘lgan kechikishni yanada kamaytiradi.
Ovoz ustiga chiqish va noto‘g‘ri to‘xtatishni kamaytirish
Real vaqtli ovoz tizimida sozlash eng qiyin bo‘lgan narsa ko‘pincha model emas, balki “foydalanuvchi qachon gapini tugatdi” degan savoldir. Xitoycha nutq orasida ko‘pincha pauzalar bo‘ladi, sukutni aniqlash vaqti juda qisqa bo‘lsa, tizim tez-tez foydalanuvchining gapini bo‘lib yuboradi.
~/setup/start-voice.sh faylida quyidagi parametrlarni sinab ko‘rishingiz mumkin:
MIN_SILENCE_MS=1200
VAD_THRESH=0.6
MIN_SPEECH_MS=500
SPEECH_PAD_MS=300Parametrlar ma’nosi:
MIN_SILENCE_MS: qancha vaqt sukutdan keyin jumla tugadi deb hisoblash; avval 1200ms qiymatidan foydalaning, javob sekin tuyulsa 900ms gacha kamaytiring;
VAD_THRESH: ovoz faolligi chegarasi; shovqinli muhitda 0.7 gacha oshirish mumkin;
MIN_SPEECH_MS: juda qisqa tovushlarni filtrlash;
SPEECH_PAD_MS: so‘zlarning yutilib ketishini kamaytirish uchun nutqdan oldin va keyin biroz bufer qoldirish.
Jurnalni kuzating:
tail -f ~/s2s/logs/s2s.log | grep -E "soft-ended|discard"Agar parametrlarni o‘zgartirgandan keyin jurnal xatti-harakati umuman o‘zgarmasa, odatda parametrlar ishlamayotgani emas, balki xizmat haqiqatan qayta ishga tushirilmagani sabab bo‘ladi.
O‘n olti. Videoxotira yetishmaganda yuklamani kamaytirish
Samaradorligi yuqoridan pastga qarab quyidagilarni ketma-ket sinab ko‘rish mumkin:
Qwen3-14B o‘rniga Qwen3-8B’dan foydalaning, taxminan 3GB tejaydi;
Qwen3-4B’ga o‘ting, taxminan 6GB tejaydi;
Ovoz tanish modelini `medium` ga o‘zgartiring, taxminan 1.5GB tejaydi;
llama.cpp kontekstini `-c 8192` dan `-c 4096` gacha kamaytiring, yana taxminan 1GB tejaydi;
Wav2Lip’ni saqlab qoling, videoxotira tanqis bo‘lganda og‘irroq lab modeli bilan almashtirmang.
Ovozli suhbatning har bir navbatida odatda atigi ikki-uchta jumla bo‘ladi. 14B va 8B modellari o‘rtasidagi “eshitilish” farqi kutish vaqti keltiradigan tajriba farqidan katta bo‘lmasligi mumkin. Videoxotira tanqis bo‘lsa, avvalo barqarorlik va past kechikishni maqsad qiling.
O‘n yetti. Ko‘p uchraydigan nosozliklar bo‘yicha tezkor qo‘llanma
Muammo | Sabab va yechim
bad interpreter yoki ^M paydo bo‘lishi | Skript Windows qator tugash formatida, `dos2unix *.sh` buyrug‘ini bajaring
WebRTC doim ulanmaydi | `.wslconfig` ichida `hostAddressLoopback=true` ekanini tekshiring, so‘ng `wsl --shutdown` buyrug‘ini bajaring
Veb-sahifa JSON tahlilida xatolikni ko‘rsatadi | Odatda backend 500 xatosini qaytargan bo‘ladi, ishga tushirish terminalidagi haqiqiy xatoni tekshiring
malformed/uri:invalid scheme | STUN manzili bo‘sh yoki noto‘g‘ri formatda, yaroqli `stun:` manzilini kiriting
Veb-sahifa ochiladi, ammo gapirganda javob bo‘lmaydi | NOISE GATE ni o‘chiring yoki pasaytiring, brauzer mikrofondan foydalanish huquqini olganini tasdiqlang
Raqamli inson tez-tez suhbatni bo‘lib yuboradi | `MIN_SILENCE_MS` qiymatini oshiring, 1200ms dan boshlash tavsiya etiladi
Javob savolga mos kelmaydi | Avval noto‘g‘ri jumla bo‘linishini tuzating va bir-biriga zid real vaqt transkripsiyasi jarayonlari bir vaqtda yoqilmaganini tekshiring
Har safar ovoz sezilarli darajada farq qiladi | TTS Base modeli ishlatilayotganini tekshiring, mos yozuv audio va so‘zma-so‘z matnni taqqoslang
Ovoz go‘yo tonalligi o‘zgargandek | `avatar-sync.js` dagi namuna olish chastotasi sozlamasini tekshiring, odatda u 16000Hz audio bilan bir xil bo‘lishi kerak
Portni bog‘lash muvaffaqiyatsiz, ammo jarayon topilmaydi | Hyper-V ajratib qo‘ygan portlar diapazonini tekshiring va ajratilmagan boshqa portni tanlang
GPU to‘liq band, ammo uzoq vaqt davomida siljish yo‘q | Video xotirasi tizim xotirasiga qaytarilayotgan bo‘lishi mumkin; model hajmini kamaytiring yoki NVIDIA boshqaruv panelida CUDA tizim xotirasiga qaytish siyosatini tekshiring
Mahalliy tarmoq IP manzilidan foydalanganda mikrofon ishlamaydi | Brauzerlar odatda mikrofonni ishlatishga faqat localhost yoki HTTPS orqali ruxsat beradi
Kompyuter uyqu rejimidan uyg‘ongach xizmat ishlamaydi | `wsl --shutdown` buyrug‘ini bajaring va uchta xizmatni qayta ishga tushiring
Qayta ishga tushirganda port bandligi haqida xabar chiqadi | Avval ikkita `stop` buyrug‘ini bajaring, eski jarayonlar tugaganini tasdiqlab, keyin qayta ishga tushiring
O‘n sakkizinchi: ixtiyoriy ravishda bir bosishda ishga tushirish skriptini yarating
Uchta xizmat ham mustaqil va barqaror ishlashini tasdiqlagach, Windows’da start-ai-avatar.bat faylini yarating:
@echo off
start "llama-server" cmd /k "cd /d E:\llama.cpp && llama-server -m E:\llama.cpp\models\Qwen3-14B-Instruct-Q4_K_M.gguf -np 1 -c 8192 -fa on --temp 1.0 --host 0.0.0.0 --port 8090"
timeout /t 25
start "livetalking" wsl -d Ubuntu-24.04 -- bash -lc "cd ~/setup && ./start-livetalking.sh"
timeout /t 30
start "voice" wsl -d Ubuntu-24.04 -- bash -lc "cd ~/setup && ./start-voice.sh"
timeout /t 10
start http://localhost:7860/Kutish vaqtini kompyuteringiz imkoniyatlariga qarab sozlang. Birinchi o‘rnatishda batch skriptiga darhol tayanmang, aks holda biror qadam muvaffaqiyatsiz bo‘lsa, qaysi xizmatda muammo yuz berganini aniqlash qiyin bo‘ladi.
O‘n to‘qqizinchi: telefondan foydalanish va internetga ochishdagi xavfsizlik muammolari
Brauzer mikrofoni maxfiy ruxsat hisoblanadi. Oddiy mahalliy tarmoq IP manzili orqali veb-sahifani ochganda, sahifa xavfsiz kontekstda bo‘lmagani uchun brauzer ruxsat berishni rad etishi mumkin. Texnik jihatdan Cloudflare Tunnel kabi vositalar yordamida mahalliy sahifani HTTPS manziliga yo‘naltirish mumkin, masalan:
cloudflared tunnel --url http://localhost:7860Ammo bu mahalliy xizmatga internet orqali kirish mumkinligini ham anglatadi. Autentifikatsiyasiz vaqtinchalik manzilni ommaga tarqatmang, shaxsiy ovozlar, suhbat yozuvlari va kamera materiallari mavjud xizmatlarni to‘g‘ridan-to‘g‘ri internetga chiqarmang. Masofadan foydalanish zarur bo‘lsa, hech bo‘lmaganda kirish nazoratini qo‘shing va foydalanib bo‘lgach tunnelni darhol yoping.
Yigirmanchi: o‘rnatish haqiqatan muvaffaqiyatli bo‘lganini qanday aniqlash mumkin
Veb-sahifa ochilishini ish yakunlanganining mezoni deb qabul qilmang. Qabul qilishni quyidagi tartibda amalga oshirish tavsiya etiladi:
1. llama.cpp ning 8090 porti xitoy tilida javobni to‘g‘ri yaratadi;
2. Ovozli veb-sahifa mikrofon kiritishini taniydi va sintez qilingan ovozni qaytaradi;
3. LiveTalking namunaviy personaji ovoz chiqaradi va mos lab harakatlarini yaratadi;
4. Maxsus kutish videosi Avatar formatiga muvaffaqiyatli o‘tkaziladi;
5. Uchta xizmat ulanganidan so‘ng, birinchi jummani kutish taxminan 1–2 soniya bo‘ladi va uzluksiz suhbatda suhbat tez-tez bo‘linmaydi;
6. Uzoq vaqt ishlaganda video xotirasi doimiy ravishda oshmaydi, xizmatni qayta ishga tushirish va to‘xtatish buyruqlari ishlaydi.
Bitta javobning kechikishi odatda bir nechta bosqich yig‘indisidan iborat: ovozni tanish, til modelining birinchi tokeni, ovoz sintezi, lab harakatlarini hisoblash va to‘liq audio tayyor bo‘lishini kutish buferi. Tajribani optimallashtirish uchun barcha modellarni ko‘r-ko‘rona almashtirishdan oldin jurnallar orqali qaysi bosqich eng sekinligini aniqlang.
Xulosa:
Bu yechimning haqiqiy qiziq tomoni faqat “bitta suratni gapirtirish” emas, balki bir nechta mahalliy AI modulini to‘liq real vaqtli interaktiv zanjirga ulashdir. Undan virtual hamroh, ko‘rgazma zalidagi gid, ish stolidagi ovozli yordamchi, jonli efirdagi raqamli inson yoki personaj prototipi sifatida foydalanish mumkin.
Birinchi o‘rnatishda eng barqaror strategiya bosqichma-bosqich tekshirishdir: avval til modelini ishga tushiring, keyin ovozni sinang, undan so‘ng lab harakatlarini tekshiring va faqat oxirida maxsus personajdan foydalaning. Har bir qadam uchun aniq muvaffaqiyat mezoni bo‘lsa, murakkab tizimni ham aniqlash va qayta takrorlash mumkin bo‘lgan kichik muammolar to‘plamiga ajratish mumkin.
Yana bir bor eslatamiz: raqamli insonning qiyofasi va ovozi shaxsiy huquqlarga daxldor bo‘lishi mumkin. Ommaviy namoyish yoki tijoriy foydalanishdan oldin material huquqi egasidan albatta ruxsat oling va bu materiallar AI tizimida insonlar bilan interaktiv suhbat uchun ishlatilayotganini aniq bildiring.
