Program
Daha önce ses modunda ChatGPT kullandıysanız, ne kadar etkileyici olduğunu zaten biliyorsunuzdur. Dinleyen, anlayan ve neredeyse gerçek bir insan gibi yanıt veren bir yapay zekâyla konuşmak şaşırtıcı derecede doğal gelebilir. Diyaloğa açık, akıllı ve duyarlı hissi verir. Yine de bir boşluk var: Küçük gecikmeler, sınırlı kesme/ara verme yönetimi ve hâlâ bir kişiyle değil de bir sistemle konuştuğunuz hissi.
Şimdi daha iyisini hayal edin. PersonaPlex tam da burada devreye giriyor.
Anında yanıt veren, sizi doğal biçimde araya girmeye bırakan, cümlenin ortasında uyum sağlayan ve gerçek bir insan sohbetine çok daha yakın hissettiren gerçek zamanlı bir sesli asistan düşünün. Fark edilir bir gecikme yok. Garip duraksamalar yok. Buluta bağımlılık yok. Sadece akıcı, yerel, gerçek zamanlı ve canlı hissi veren bir diyalog.
PersonaPlex, NVIDIA tarafından geliştirilen gerçek zamanlı, yerel bir sesli etkileşim sistemidir. Ses tabanlı yapay zekâyı basit konuşma-metne ve metin-konuşma hatlarının ötesine taşımak için tasarlanmıştır. Bunun yerine, asistanın tıpkı yüz yüze bir sohbette olduğu gibi sürekli konuşabildiği, dinleyebildiği ve uyum sağlayabildiği, düşük gecikmeli akışlı konuşmalar sağlar.
Bu eğitimde sizi PersonaPlex üzerinden adım adım geçireceğim. PersonaPlex’in ne olduğunu ve neden tipik sesli asistanlardan temelde farklı hissettirdiğini anlayarak başlayacağız. Ardından yerel ortamı kuracak, PersonaPlex’i kaynaktan yükleyecek ve PersonaPlex WebUI sunucusunu başlatacağız. Sonrasında sisteme web arayüzü üzerinden etkileşimle yaklaşacak ve en sonunda bir Python betiği kullanarak gerçek zamanlı sesli konuşmaları test edeceğiz.
PersonaPlex’in arkasındaki temellerin bir kısmını öğrenmek için Python ile Konuşma Dili İşleme kursuna göz atmanızı öneririm.
PersonaPlex nedir?
PersonaPlex, sesli etkileşimleri gerçekten doğal hissettiren ve aynı zamanda sesi ve kişiliği tamamen özelleştirmenize izin veren yeni bir sohbet yapay zekâ sistemidir.
Duraksamalar ve katı sıra alma davranışları olan tipik bir asistan gibi ses çıkarmak yerine, kesmelerin, zamanlamanın ve tonun insansı hissettirdiği akıcı, gerçek zamanlı konuşmalar sağlar.
Özünde PersonaPlex, aynı anda dinleyip konuşabildiği anlamına gelen tam çift yönlü (full‑duplex) bir mimari kullanır.
Konuşma tanıma, dil anlama ve konuşma üretimi için ayrı modelleri zincirlemek yerine, kullanıcı konuşurken sürekli güncellenen tek ve birleşik bir modele dayanır.
Ses istemleri asistanın nasıl ses çıkardığını, metin istemleri ise onun kim olduğunu ve nasıl davranması gerektiğini tanımlar. Bu birleşim, PersonaPlex’in tutarlı bir persona korurken anında ve doğal biçimde yanıt vermesini sağlar.

PersonaPlex Mimarisi | Kaynak: NVIDIA PersonaPlex
PersonaPlex, FullDuplexBench ve ServiceDuplexBench adlı genişletilmiş bir müşteri hizmetleri kıyaslaması kullanılarak değerlendirilmektedir.
Sohbet dinamikleri, düşük gecikmeli yanıtlar, kesme/ara verme yönetimi ve görev bağlılığı açısından hem asistan hem de müşteri hizmetleri senaryolarında diğer açık kaynaklı ve ticari sistemlerden daha iyi performans gösterir.

Sohbet Dinamikleri (Yüksek daha iyidir) | Kaynak: NVIDIA PersonaPlex
Aşağıdaki video demosunda, modelle gerçek zamanlı olarak takılmalar ve şakalar dahil akıcı bir sohbet yürütüldüğünü net biçimde görebilirsiniz.
Ortamı Kurma
Başlamadan önce, nvidia/personaplex-7b-v1 için Hugging Face model sayfasını ziyaret edin ve model kullanım koşullarını kabul edin.
PersonaPlex, erişimi kısıtlı (gated) bir modeldir; bu nedenle bir Hugging Face API belirtecine ihtiyacınız olacak. Hugging Face hesabınızdan belirteci oluşturun ve elinizin altında bulundurun; modeli kullanıma açmak için birazdan ortam değişkenlerine ekleyeceğiz.

Sonraki adımda RunPod’a gidin ve yeni bir A40 GPU pod’u başlatın. En güncel PyTorch imajını seçin, ardından ortamı özelleştirmek için Edit’e tıklayın.

Kapsayıcı disk boyutunu 50 GB’a artırın; çünkü modelin kendisi yaklaşık 20 GB’tır ve ek bağımlılıklar da indirilecektir. Dışa açılan HTTP portları bölümünde 8998 numaralı portu ekleyin. Ortam değişkenleri altında HF_TOKEN ekleyin ve Hugging Face API belirtecinizi yapıştırın.

Her şey yapılandırıldıktan sonra, geçersiz kılmaları kaydedin ve pod’u dağıtın.

Pod başladıktan sonra JupyterLab örneğine bir bağlantı göreceksiniz. Açın ve ardından bir terminal başlatın. Makineye SSH veya web terminali üzerinden erişebilirsiniz; ancak Jupyter terminalini kullanmak en basit seçenektir.

Terminalde, ses işleme için gerekli olan Opus ses codec’i geliştirme kütüphanesini kurun:
sudo apt update
sudo apt install libopus-dev

PersonaPlex’i Kaynaktan Yükleme
PersonaPlex kod tabanı NVIDIA tarafından açık kaynaklanmıştır ve GitHub’da mevcuttur (NVIDIA/personaplex: PersonaPlex kodu) — keşfetmeyi, özelleştirmeyi ve yerelde çalıştırmayı kolaylaştırır.
Kaynaktan yüklemek, kurulum üzerinde tam kontrol sağlar ve depodaki en güncel değişikliklerle uyumluluğu güvence altına alır.

Başlamak için PersonaPlex deposunu klonlayın:
git clone https://github.com/NVIDIA/personaplex.git
cd personaplex

Ardından, PersonaPlex’in üzerine inşa edildiği çekirdek tam çift yönlü konuşma modeli Moshi’yi kurun.
Moshi, gerçek zamanlı dinleme ve konuşmadan sorumludur; PersonaPlex’in geleneksel ASR → LLM → TTS hattına bağlı kalmadan kesmeleri, duraksamaları ve doğal sohbet zamanlamasını yönetmesini sağlar.
Bunu kaynaktan kurmak, ses, akış ve sohbet bileşenlerinin yerel yürütme için düzgün biçimde ayarlanmasını sağlar.
pip install moshi/.
Moshi yüklendikten sonra, ortamınız PersonaPlex sunucusunu başlatıp modelle gerçek zamanlı etkileşime geçmek için tamamen hazırdır.
PersonaPlex WebUI Sunucusunu Başlatma
Ortam ve bağımlılıklar hazır olduğuna göre, artık PersonaPlex WebUI sunucusunu başlatabilirsiniz. Terminalde, PersonaPlex’i çalıştıran Moshi sunucusunu başlatmak için şu komutu yürütün:
python -m moshi.server --host 0.0.0.0 --port 8998
Bu komutu ilk kez çalıştırdığınızda, sunucu PersonaPlex modelini ve diğer gerekli dosyaları otomatik olarak indirecektir. Model oldukça büyük olduğundan, bu adım ağ hızınıza bağlı olarak birkaç dakika sürebilir.

İndirme tamamlandığında, sunucu 8998 numaralı portu dinlemeye başlayacaktır.

WebUI’a erişmek için RunPod panonuza geri dönün.
Connect bölümünde, dışa açılmış 8998 portunu bulun ve verilen bağlantıya tıklayın. Bu, tarayıcınızda PersonaPlex WebUI’ı açacak ve modelle gerçek zamanlı sesli konuşmalar yoluyla etkileşime başlamanızı sağlayacaktır.

WebUI ile PersonaPlex’i Test Etme
PersonaPlex WebUI, başlamanıza yardımcı olacak birkaç örnek istemle birlikte gelir ve ayrıca asistanın rolünü ve davranışını tanımlamak için kendi özel isteminizi de oluşturabilirsiniz.
Bağlanmadan önce bir ses seçebilirsiniz; bu, konuşma sırasında personanın nasıl ses çıkardığını belirler.
Bu eğitim için sistemi hissetmek adına varsayılan ayarlarla başlamak en iyisidir.

Connect düğmesine tıkladıktan sonra etkileşimli oturuma yönlendirileceksiniz. Burada, doğrudan modele konuşabilir, yanıtlarını gerçek zamanlı duyabilir ve konuşmanın anlık olarak oluşan dökümünü görebilirsiniz.
Deneyim akıcıdır; doğal zamanlamayla ve hızlıca araya girme veya yanıt verme olanağıyla gelir.
Testlerim sırasında etkileşim şaşırtıcı derecede doğal ve ilgi çekiciydi.
Ara sıra takılmalar fark ettim; bunun modelden ziyade tarayıcı veya sistem yükünden kaynaklanması muhtemeldi. Bunun dışında, sohbet gerçek bir kişiyle konuşmaya oldukça yakındı.

Kendinizi rahat hissettikten sonra farklı istemler ve seslerle denemeler yapmayı deneyin. PersonaPlex, daha doğal sohbet sesleri ve daha ifade gücü yüksek varyantlar dahil olmak üzere geniş bir ön paketli ses gömme yelpazesini destekler:
- Doğal (kadın): NATF0, NATF1, NATF2, NATF3
- Doğal (erkek): NATM0, NATM1, NATM2, NATM3
- Çeşit (kadın): VARF0, VARF1, VARF2, VARF3, VARF4
- Çeşit (erkek): VARM0, VARM1, VARM2, VARM3, VARM4

Sesleri ve istemleri değiştirmek, PersonaPlex’in farklı roller ve konuşma tarzları arasında kişiliği, tonu ve sohbet akışını nasıl koruduğunu keşfetmenin harika bir yoludur.
PersonaPlex’i Python ile Çevrimdışı Çalıştırma
WebUI gerçek zamanlı konuşmalar için harikadır; ancak PersonaPlex’i Python’dan çevrimdışı da çalıştırabilirsiniz. Bu, tekrarlanabilir çıktılar istediğinizde, farklı istemleri hızlıca test etmek istediğinizde veya demolar ve deneylerde yeniden kullanabileceğiniz ses dosyaları üretmek istediğinizde kullanışlıdır.
Çevrimdışı akış basittir: (1) bir ses istemi, (2) bir metin istemi ve (3) bir girdi WAV dosyası sağlarsınız. PersonaPlex daha sonra bir çıktı ses yanıtı ve modelin dökümünü içeren bir JSON dosyası üretir.
Jupyter’da yeni bir defter başlatın ve dizini klonlanan depoya değiştirin:
%cd personaplex
Yeni bir hücrede aşağıdakini çalıştırın. Bu, çevrimdışı çalıştırıcıyı çağırır ve hem üretilen sesi hem de dökümü diske yazar:
%%capture
!python -m moshi.offline \
--voice-prompt "NATF2.pt" \
--text-prompt "You are a wise and friendly teacher. Answer questions in a clear, engaging way." \
--input-wav "assets/test/input_assistant.wav" \
--seed 42424242 \
--output-wav "out_teacher.wav" \
--output-text "out_teacher.json"
Her bayrak ne yapar:
--voice-promptses gömmesini seçer (burada, doğal bir kadın sesi).--text-promptasistanın rolünü ve davranışını tanımlar.--input-wavmodelin yanıt vereceği kaydedilmiş kullanıcı sesidir.--seedçıktının çalıştırmalar arasında daha tekrarlanabilir olmasını sağlar.--output-wavüretilen konuşma yanıtıdır.--output-textdökümü JSON olarak kaydeder.
Komut tamamlandıktan sonra yanıt sesini doğrudan çalabilirsiniz:
from IPython.display import Audio
Audio("out_teacher.wav")
Seçilen seste, metin isteminizde tanımlanan personayla uyumlu, net ve doğal bir yanıt duymalısınız.

JSON dökümü bazen noktalama etrafında fazladan boşluklar veya bölünmüş sözcük parçaları gibi belirteçleştirme artıkları içerebilir. Aşağıdaki yardımcı, JSON’u yükler ve okunabilir metne temizler.
import json
import re
with open("out_teacher.json") as f:
data = json.load(f)
def detokenize(tokens):
# 1) drop padding-like tokens
drop = {"PAD", "EPAD", "<pad>", "</s>", "<s>"}
toks = [t for t in tokens if t not in drop]
# 2) join with spaces first
s = " ".join(toks)
# 3) fix spacing around punctuation
s = re.sub(r"\s+([.,!?;:])", r"\1", s)
# 4) fix common split contractions: "it ' s" -> "it's"
s = s.replace(" ' s", "'s").replace(" n't", "n't").replace(" 're", "'re").replace(" 'm", "'m").replace(" 've", "'ve").replace(" 'd", "'d")
# 5) fix stray spaces around apostrophes
s = re.sub(r"\s+'\s+", "'", s)
# 6) fix cases like "for k" -> "fork" and "fl uff" -> "fluff"
# (general rule: merge single-letter fragments if they look like split wordpieces)
s = re.sub(r"\b([A-Za-z])\s+([A-Za-z]{1,3})\b", r"\1\2", s)
# 7) collapse multiple spaces
s = re.sub(r"\s{2,}", " ", s).strip()
return s
clean_text = detokenize(data) # replace with your list variable
clean_text
Artık üretilen sesle eşleşen, okunabilir bir döküm dizesi görmelisiniz. Çıktınız hâlâ garip bölünmeler içeriyorsa (örneğin “fl uff” veya “afor k”), bu bazı çalıştırmalar için normaldir ve ek kurallarla daha fazla temizlenebilir; ancak ana içerik zaten anlaşılır olmalıdır.
"Hey, let me know if you have any questions.
Hmm, first rinse the rice a couple of times until the water runs clear, that cuts down on starch, then use apot with a tight fitting lid, bring to a boil,
give it a quick stir, then turn the heat down low and cover, let it s immer without lifting it, and when it'done fl uff it with afor k, that usually
You could to ss the hot rice with a nice handful of chopped fresh herbs like basil or par sley, or you could sprinkle a little g rated cheese,
a squeeze of lemon or lime, adr izzle of olive oil, some chopped fresh herbs, or even some to ast ed nuts, that adds color and flavor."
Son Düşünceler
PersonaPlex’i test etmek beni gerçekten şaşırttı. İlk etkileşimden itibaren, bir modelle deneme yapmaktan ziyade gerçek bir sohbet ediyormuşum gibi hissettirdi. Doğal biçimde araya girebilmek, anında yanıt almak ve tüm konuşma boyunca tutarlı bir kişilik korunması, denediğim çoğu sesli sistemin çok ilerisinde hissettirdi. Her şeyi yerelde çalıştırmak, fark edilir bir gecikme veya kontrol kaybı olmadan deneyimi daha da etkileyici kıldı.
Yine de bazı eksiler var. Ara sıra takılmalar fark ettim ve konuşma ilerledikten sonra, önceki bir konuya dönmeyi her zaman pürüzsüz biçimde yönetemiyor.
Ayrıca henüz İngilizce dışındaki aksanları tam olarak anlamıyor; bu da yanlış telaffuzlara veya mükemmel olmayan dökümlere yol açabiliyor. Bunlar temel sorunlardan ziyade uç durumlar gibi geliyor ve hızla iyileşeceklerinden eminim.
Gelecekte bu sorunların çözüleceğinden ve GPT-5.2’nin akıl yürütmesini ElevenLabs’in ses kalitesiyle birleştiren, tamamen yerel ve gerçek zamanlı daha da iyi bir konuşan yapay zekâ elde edeceğimizden eminim.
PersonaPlex SSS
PersonaPlex’i yerelde çalıştırmak için hangi donanıma ihtiyacım var?
NVIDIA, 7B modeli düşük gecikmeyle sorunsuz çalıştırmak için en az 24 GB VRAM’e sahip bir GPU (A10G, A40 veya RTX 3090/4090 gibi) önermektedir. Ayrıca CUDA desteği olan bir Linux ortamına ihtiyacınız var. Katmanları CPU’ya aktarmak mümkün olsa da, bu modelin özel olmasını sağlayan gerçek zamanlı performansı önemli ölçüde düşürecektir.
PersonaPlex İngilizce dışındaki dilleri konuşabilir mi?
Şu anda v1 sürümü yalnızca İngilizce’dir. Mimari birden çok dili destekler ve NVIDIA, diğer diller (örneğin İspanyolca) için desteğin gelecekteki güncellemelerin yol haritasında olduğunu belirtmiştir; ancak şimdilik İngilizce konuşmalar için optimize edilmiştir.
Bunu ticari uygulamalar için kullanabilir miyim?
Evet. Model ağırlıkları NVIDIA Açık Model Lisansı altında yayınlanmıştır ve bu genel olarak ticari kullanıma izin verir. Ancak, kullanım senaryonuzun (ör. ücretli bir hizmet barındırma) şartlara uyduğundan emin olmak için Hugging Face model kartındaki özel lisans sözleşmesini incelemelisiniz.
Bu, faster-whisper ve hızlı bir LLM kullanmaktan nasıl farklı?
Geleneksel sistemler "yarı çift yönlü"dür—sizin konuşmayı bitirmenizi bekler, sesi yazıya döker, düşünür ve sonra konuşur. PersonaPlex "tam çift yönlü"dür; yani sesi ve metin belirteçlerini sürekli işler. Bu sayede konuşurken eşzamanlı dinleyebilir, kesmeleri doğal biçimde yönetebilir ve sıra tabanlı sistemlerin garip gecikmesi olmadan geri bildirim sesleri ("hı-hı", "evet") üretebilir.
Model neden bazen isimleri yanlış telaffuz ediyor veya dökümde sözcükleri bölüyor?
PersonaPlex, ses belirteçlerini gerçek zamanlı çerçevelerde (24kHz) akış olarak gönderdiğinden, metin belirteçleri bazen bölünmüş çerçevelere yayılmış olarak üretilir. Bu, ham dökümde "fl uff" veya "afor k" gibi artıklara neden olabilir. Bunlar akış belirteçleştirmenin normal yan etkileridir ve basit son işleme betikleriyle temizlenebilir.
Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

