Kurs
Otomatik konuşma tanıma son yıllarda önemli ölçüde gelişti. Eskiden güçlü GPU’lar gerektiren ve tutarsız sonuçlar üreten konuşmadan metne modelleri artık sıradan bilgisayarlarda doğru deşifre sağlayabiliyor.
Aynı zamanda, model boyutları küçüldü, CPU çıkarımı hızlandı ve çok dilli destek genişledi; bu da kullanıcılara deşifre kalitesi, hız, erişilebilirlik ve gizliliğin daha iyi bir birleşimini sunuyor.
Microsoft’un VibeVoice-ASR-BitNet modeli bu ilerlemenin iyi bir örneğidir.
Optimizasyonlu VibeASR.cpp çalışma zamanı, özel bir GPU’ya ihtiyaç duymadan veya kayıtları bir bulut hizmetine göndermeden Windows, Linux veya macOS bilgisayarda çok dilli konuşmadan metne işlemini yerelde çalıştırmayı mümkün kılar.
Bu kılavuzda, VibeASR.cpp’yi nasıl kurup derleyeceğinizi, quantize edilmiş modeli nasıl indireceğinizi, komut satırından ses dosyalarını nasıl deşifre edeceğinizi, kalıcı akış sunucusunu nasıl çalıştıracağınızı ve konuşmayı yüklemek ya da kaydetmek için Gradio web arayüzünü nasıl kullanacağınızı öğreneceksiniz.
Microsoft VibeASR.cpp nedir?
VibeASR.cpp, Microsoft’un VibeVoice-ASR-BitNet modeli için resmi C++ çıkarım çalışma zamanıdır; CPU’larda verimli yerel çıkarım için tasarlanmış sıkıştırılmış, çok dilli bir otomatik konuşma tanıma modelidir.
Ayrı bir konuşma modeli olmak yerine, VibeASR.cpp modeli çalıştırmak için gereken optimize motoru sağlar ve özel bir GPU’ya ya da bulut tabanlı konuşma hizmetine ihtiyaç duymadan gerçek zamanlı deşifre yapılmasına olanak tanır.
Bu sayede dizüstü bilgisayarlar, masaüstleri, uç cihazlar ve sınırlı hesaplama kaynaklarına sahip diğer sistemler için uygundur.

Kaynak: microsoft/VibeVoice-ASR-BitNet
CPU dağıtımını pratik hale getirmek için Microsoft, özgün VibeVoice-ASR mimarisinde kullanılan Qwen2.5-7B dil modeli bileşenini çok daha küçük olan Qwen2.5-1.5B modeliyle değiştirdi.
Ayrıca iki ana bileşene farklı quantization yöntemleri uygular:
I8_SVAE ses kodlayıcı içinI2_Sdil modeli için; gömlemeler daha yüksek hassasiyettedir
Bu optimizasyonlar, toplam model boyutunu yaklaşık 4,62 GB’tan 1,58 GB’a düşürerek dizüstü ve masaüstü bilgisayarlarda çalıştırmayı pratik hale getirir.
Boyutta önemli azalmaya rağmen, sıkıştırılmış model daha büyük mimariye kıyasla kelime hata oranında yalnızca yaklaşık %1–4 puanlık nispeten küçük bir artış gösterir.
VibeASR.cpp, çıkarım hızını artırmak için ggml çerçevesini, özel CPU talimatlarını ve operatör füzyonunu kullanır.
Microsoft’un kıyaslamalarına göre, karşılaştırılabilir model boyutlarında Whisper.cpp’den 1,6–2,3 kat daha hızlı çalışabilir ve yeterli iş parçacığı kullanıldığında desteklenen CPU’larda gerçek zamandan daha hızlı deşifreye ulaşabilir.
Microsoft’un CPU kıyaslamalarında model, dört iş parçacığıyla 0,63 ve sekiz iş parçacığıyla 0,42 RTF’ye ulaştı; bu da yaklaşık olarak 1,59× ve 2,38× gerçek zaman hızına eşittir.
Bildirilen WER değerleri arasında MLC English’te %8,25, AMI kulaklık sesinde %21,36, AMI uzak mikrofon sesinde %25,87 ve LibriSpeech clean’de %2,41 yer alır ve deşifre doğruluğu, model boyutu ve CPU performansı arasında güçlü bir denge gösterir.
1. Gerekli Derleme Araçlarını Kurun
VibeASR.cpp tamamen CPU üzerinde çalışır; bu nedenle özel bir GPU’ya ihtiyacınız yoktur. Yalnızca desteklenen bir Windows, Linux veya macOS bilgisayara, Python 3.9 veya daha yenisine, Git’e, bir C++ derleyicisine ve kaynak kodu, derleme dosyaları ve model için yaklaşık 4 GB boş disk alanına ihtiyacınız vardır.
Derleme süreci ayrıca CMake ve Ninja gerektirir.
Windows’ta en kolay seçenek, derleyici ve derleme araçlarını önceden yapılandırılmış bir terminalde sunan w64devkit’i kullanmaktır.
Linux’ta gerekli paketler doğrudan sistem paket yöneticisiyle kurulabilir.
Windows
w64devkit yayınlar sayfasından en güncel x64 .exe dosyasını indirin.

İndirilen dosya kendiliğinden açılan bir arşivdir. Çalıştırın ve klasörü şu gibi basit bir konuma çıkarın:
C:\w64devkit
Ardından şunu açın:
C:\w64devkit\w64devkit.exe
Bu işlem, GCC, CMake, Make ve Ninja içeren kullanıma hazır bir terminal başlatır. Ortam değişkenlerini manuel olarak yapılandırmadan Windows adımlarının geri kalanı için bu terminali kullanabilirsiniz.
Linux
Ubuntu, Debian ve türevi Linux dağıtımlarında gerekli derleyici ve derleme araçları tek bir komutla kurulabilir:
sudo apt update
sudo apt install build-essential cmake ninja-build git python3 python3-venv
Bu komut, GCC derleyicisini, CMake’i, Ninja’yı, Git’i, Python’u ve bir Python sanal ortamı oluşturmak için gereken paketi kurar.
macOS
macOS’ta Apple’ın komut satırı geliştirme araçlarını kurun:
xcode-select --install
Ayrıca Git, Python 3.9 veya daha yenisi, CMake ve Ninja’ya ihtiyacınız olacak. Kalan araçları kurmanın en kolay yolu Homebrew’dür:
brew install git python cmake ninja
2. VibeASR.cpp’yi Klonlayın ve Python Ortamını Kurun
Aşağıdaki kurulum süreci Windows, Linux ve macOS için aynıdır.
Tek işletim sistemi özel adım, Python sanal ortamını etkinleştirmek için kullanılan komuttur.
Terminalinizi açın, projeyi saklamak istediğiniz klasöre gidin ve VibeASR.cpp deposunu klonlayın:
git clone --recursive https://github.com/microsoft/VibeASR.cpp.git
cd VibeASR.cpp

--recursive seçeneği, gerekli llama.cpp alt modülünü de indirir. Bu olmadan çıkarım çalışma zamanını derlemek için gereken bazı dosyalar eksik kalır.
Proje klasörü içinde bir Python sanal ortamı oluşturun.
python -m venv .venv
Kendi işletim sisteminiz için olan komutla etkinleştirin.
w64devkit terminaliyle Windows:
. .venv/Scripts/activate
Linux ve macOS:
source .venv/bin/activate
Etkinleştirdikten sonra terminalde komut isteminden önce (.venv) görünmelidir. Python’ın erişilebilir olduğunu doğrulayın:
python --version
pip’i yükseltin ve proje bağımlılıklarını kurun:
python -m pip install --upgrade pip
pip install -r requirements.txt
Bu bağımlılıklar kurulum betiği, model indirme süreci ve yerel Gradio web arayüzü tarafından kullanılan Python paketlerini içerir.
3. VibeASR.cpp’yi Derleyin ve Modeli İndirin
VibeASR.cpp, hem C++ derleme sürecini hem de model indirmeyi yöneten bir kurulum betiği içerir.
Komut satırı ve akış yürütülebilir dosyalarını derler, gereken GGUF paketini kurar ve önceden quantize edilmiş model dosyalarını proje dizinine indirir.
Kurulum betiğini çalıştırmadan önce Python sanal ortamının etkin olduğundan emin olun.
Linux ve macOS’te şunu çalıştırın:
python setup_env.py
Windows’ta w64devkit terminali içinde şu komutu çalıştırın:
CMAKE_GENERATOR=Ninja python setup_env.py
CMAKE_GENERATOR=Ninja ayarı, CMake’in w64devkit ortamında bulunmayan Microsoft Visual C++ yerine Ninja derleme sistemini kullanmasını sağlar.
Kurulum betiği şunları yapacaktır:
- Gerekli
ggufPython paketini kurar. - VibeASR.cpp’yi yapılandırır ve derler.
- Çıkarım ve akış yürütülebilir dosyalarını oluşturur.
- Önceden quantize edilmiş VibeASR model dosyalarını indirir.
- İndirilen modelleri
models/vibeasriçine kaydeder.
İşlem tamamlandıktan sonra ana çıkarım yürütülebilir dosyası aşağıdaki konumda bulunacaktır.
Windows’ta:
build/bin/asr_infer.exe
Linux ve macOS’ta:
build/bin/asr_infer
Kullanılabilir komut satırı seçeneklerini görüntüleyerek yürütülebilir dosyanın başarıyla derlendiğini doğrulayın.
Windows’ta:
./build/bin/asr_infer.exe --help
Linux ve macOS’ta:
./build/bin/asr_infer --help

4. Dosya ve Akış Deşifresini Test Edin
Artık çalışma zamanı ve model hazır olduğuna göre iki deşifre yöntemini test edebilirsiniz.
Standart çıkarım yürütülebiliri bir ses dosyasını işler ve tamamlanmış deşifreyi döndürür; akış sunucusu ise modeli yüklenmiş halde tutar ve belirteçler oluşturuldukça deşifreyi kademeli olarak görüntüler.
Önce, VibeASR.cpp proje klasörü içinden kısa bir örnek kaydı indirin:
curl -L "https://homepages.inf.ed.ac.uk/htang2/notes/speech-samples/103-1240-0000.wav" -o recording.wav
Ses dosyası mevcut proje dizininde recording.wav adıyla kaydedilecektir.
Bir ses dosyasını deşifre edin
Standart çıkarım komutu ses kodlayıcıyı ve dil modelini yükler, kaydı işler ve tamamlanmış deşifreyi yazdırır.
Windows’ta şunu çalıştırın:
./build/bin/asr_infer.exe \
--vae-model models/vibeasr/vibeasr-vae-encoder-i8_s.gguf \
--lm-model models/vibeasr/vibeasr-lm-i2_s-embed-q6_k.gguf \
--audio recording.wav \
-t 6 \
--greedy
Linux ve macOS’ta, aynı komutu .exe uzantısı olmadan kullanın:
./build/bin/asr_infer \
--vae-model models/vibeasr/vibeasr-vae-encoder-i8_s.gguf \
--lm-model models/vibeasr/vibeasr-lm-i2_s-embed-q6_k.gguf \
--audio recording.wav \
-t 6 \
--greedy

-t 6 seçeneği çıkarıma altı CPU iş parçacığı atar. İşlemcinize bağlı olarak bu sayıyı artırabilir veya azaltabilirsiniz.
--greedy seçeneği her çözümleme adımında en olası belirteci seçerek tutarlı deşifre sonuçları üretir.
Bilgisayarımda 14,085 saniyelik kayıt yaklaşık 13,7 saniyede işlendi:
RTF: 0.9726
Speed: approximately 1.03× real time
Gerçek zaman faktörü (RTF), işlem süresini sesin süresiyle karşılaştırır.
1,0’ın altındaki bir RTF, kaydın gerçek çalma süresinden daha hızlı deşifre edildiği anlamına gelir. Performans işlemciye, işletim sistemine, iş parçacığı sayısına ve kayıt uzunluğuna göre değişecektir.
Belirteç bazlı akışı test edin
VibeASR.cpp kalıcı bir akış sunucusu da içerir. İki model dosyasını bir kez yükler ve etkin kalır; böylece her seferinde yeniden başlatıp modeli yeniden yüklemeden birden fazla kaydı gönderebilirsiniz.
Çıktı, büyük bir dil modelinden akışa benzer şekilde çalışır.
Tüm deşifre tamamlanmasını beklemek yerine, çözücü her belirteci ürettikçe metni görmeye başlarsınız.
Bazı belirteçler tam kelimeleri, bazıları ise kelime parçalarını veya noktalamayı temsil edebilir; ancak deşifre tamamlanana kadar kademeli olarak görüntülenirler.
Windows’ta sunucuyu şu komutla başlatın:
./build/bin/asr_stream_server.exe \
--vae-model models/vibeasr/vibeasr-vae-encoder-i8_s.gguf \
--lm-model models/vibeasr/vibeasr-lm-i2_s-embed-q6_k.gguf \
-t 6 \
--greedy
Linux ve macOS’ta şunu çalıştırın:
./build/bin/asr_stream_server \
--vae-model models/vibeasr/vibeasr-vae-encoder-i8_s.gguf \
--lm-model models/vibeasr/vibeasr-lm-i2_s-embed-q6_k.gguf \
-t 6 \
--greedy

Sunucunun modelleri yüklemeyi bitirmesini ve şunu görüntülemesini bekleyin:
---READY---
Ses dosyasının yolunu girin ve Enter’a basın:
recording.wav
Deşifre belirteç belirteç görünmeye başlayacaktır. Kayıt tamamen işlendiğinde sunucu şunu görüntüler:
---END---

Daha sonra modelleri yeniden yüklemeden başka bir ses dosyası yolu girebilirsiniz. Sunucuyu durdurmak için şunu yazın:
exit
Bu kalıcı iş akışı, özellikle birden fazla kaydı deşifre ederken veya kademeli deşifre çıktısına ihtiyaç duyan başka bir uygulamaya VibeASR.cpp bağlanırken faydalıdır.
5. Web Arayüzünü Başlatın ve Test Edin
VibeASR.cpp, ses dosyaları yüklemek veya mikrofonunuzla konuşma kaydetmek için yerel bir Gradio web arayüzü içerir. Süreç Windows, Linux ve macOS’ta aynıdır; ancak Windows’ta yürütülebilir dosyalar .exe ile biter.
Arayüz için gereken bağımlılıklar, Gradio, SoundFile ve NumPy dahil olmak üzere, zaten requirements.txt aracılığıyla kuruldu.
Önce sanal ortamın etkin olduğundan emin olun.
w64devkit terminaliyle Windows:
. .venv/Scripts/activate
Linux ve macOS:
source .venv/bin/activate
Windows’ta arayüzü şu komutla başlatın:
python demo/gradio_asr_demo.py \
--port 7860 \
--bin build/bin/asr_infer.exe \
--server-bin build/bin/asr_stream_server.exe
Linux ve macOS’ta varsayılan yürütülebilir yollar otomatik olarak algılanır:
python demo/gradio_asr_demo.py --port 7860
Model yolları tüm işletim sistemleri için Gradio betiği içinde zaten yapılandırılmıştır; bu nedenle komuta eklemeniz gerekmez.
Betik, standart çıkarım yürütülebiliri ile akış sunucusu için ayrı yolları da destekler.
Tarayıcınızda aşağıdaki adresi açın:
http://127.0.0.1:7860
Arayüzü keşfedin
Arayüz sayesinde şunları yapabilirsiniz:
- CPU modelini seçin.
- CPU iş parçacığı sayısını belirleyin.
- Çevrimiçi ve Çevrimdışı işleme arasında geçiş yapın.
- Greedy çözümlemeyi etkinleştirin veya sıcaklık ve Top-p değerlerini ayarlayın.
- Bir ses dosyası yükleyin veya doğrudan mikrofonunuzdan kaydedin.
- İsteğe bağlı sıcak kelimeler ekleyin; örneğin kişi adları veya teknik terimler.
- Deşifreyi, ses süresini ve gerçek zaman faktörünü görüntüleyin.
Buradaki Çevrimiçi mod, sesinizin çevrimiçi bir hizmete gönderildiği anlamına gelmez.
Daha uzun kayıtları parçalara ayırarak kademeli olarak işler ve mevcutsa asr_stream_server kullanır.
Çevrimdışı mod, sonucu görüntülemeden önce tam ses dosyasını işler.

Kısa bir kaydı test edin
İlk test için, kısa bir cümleyi doğrudan mikrofondan kaydettim ve Çevrimdışı modu ile dört CPU iş parçacığı seçtim.

0,9584 RTF, modelin her bir saniyelik sesi işlemek için yaklaşık 0,96 saniyeye ihtiyaç duyduğu anlamına gelir.
Bu yaklaşık olarak 1,04× gerçek zamandır; yani deşifre, kaydın gerçek süresinden biraz daha hızlı tamamlandı.
Daha uzun bir kaydı test edin
Yaklaşık 109,7 saniyelik konuşma içeren daha uzun bir kayıtla da arayüzü test ettim. Model, tamamlanmış deşifreyi başarıyla üretti ve şunu bildirdi:
RTF: 0.5305
Audio: 109.7s

Bu, modelin her bir saniyelik sesi işlemek için yaklaşık 0,53 saniyeye ihtiyaç duyduğu anlamına gelir. Tüm kaydın deşifresi yaklaşık 58 saniye sürdü ve yaklaşık 1,88× gerçek zaman hız sağladı.
Son Düşünceler
Yerel konuşma tanımanın ne kadar pratik hale geldiği beni etkiledi.
Eski bir CPU’da bile VibeASR.cpp, GPU, büyük miktarda bellek veya fazla depolama gerektirmeden sese gerçek zamana yakın ya da daha hızlı deşifre yapabiliyor.
Derlenmiş yürütülebilir dosya ayrıca bir Python uygulamasına entegre edilebilir, bir FastAPI uç noktasına sarılabilir veya daha büyük bir yerel aracın deşifre motoru olarak kullanılabilir.
Dikkate alınması gereken ana ayar, işleme atanan CPU iş parçacığı sayısıdır.
Ayrıca, deşifreyi kademeli olarak akış halinde veren çevrimiçi mod ile sesi işledikten sonra tamamlanmış deşifreyi döndüren çevrimdışı mod arasında seçim yapmanız gerekir.
Kurulum yine de daha kolay olabilir; özellikle Windows, Linux ve macOS’ta.
Proje hâlâ gelişmekte olduğundan, kurulumun ve önceden derlenmiş ikili dosya desteğinin zamanla iyileşmesini bekliyorum. Kararlı bir bağımsız ikili dosya mevcut olduğunda, bu modeli çok daha fazla yerel konuşmadan metne projesinde kullanabileceğimi düşünüyorum.
Ayrıca şu içeriğimize de göz atmanızı öneririm: GPT Live Transcribe API eğitimi.
SSS
VibeASR modeli gerçekte hangi dilleri destekliyor?
VibeVoice-ASR modeli yerel olarak 50’den fazla dili destekler. Buna İngilizce, Çince, Fransızca, İtalyanca, Korece, Portekizce ve Vietnamca dahildir. Açık bir dil ayarı gerektirmez ve tek bir cümlede birden fazla dilin doğal olarak karıştığı “kod değiştirme”yi otomatik olarak yönetebilir.
MP3 veya video dosyalarımı deşifre etmeden önce dönüştürmem gerekir mi?
Doğrudan asr_infer komut satırı yürütülebilirini kullanıyorsanız, genellikle 16 kHz, 16 bit mono olan .wav dosyaları bekler. MP3, M4A veya FLAC gibi diğer biçimlerde sesiniz varsa, CLI’ye göndermeden önce FFmpeg gibi bir araçla bunları önce WAV’a dönüştürmeniz gerekir.
Model farklı konuşmacıları tanımlayabilir veya kelime düzeyinde zaman damgaları verebilir mi?
Temel VibeVoice-ASR mimarisi, tek bir geçişte “Kim” (konuşmacı ayrımı), “Ne zaman” (zaman damgaları) ve “Ne” (içerik) öğelerini içeren yapılandırılmış çıktılar üretmek üzere açıkça tasarlanmıştır. Ancak hafif C++ çıkarım yürütülebiliri (VibeASR.cpp) şu anda kademeli ham metin deşifresine odaklanmaktadır. Konuşmacı kimlikleri ve zaman damgaları içeren tam yapılandırılmış JSON çıktısını almak için genellikle modeli Python transformers kitablığıyla çalıştırmanız gerekir.
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.

