Lewati ke konten utama

Cara Menjalankan Speech-to-Text Lokal di CPU dengan VibeASR.cpp

Pelajari cara menjalankan speech-to-text multibahasa yang cepat dan akurat secara lokal di CPU menggunakan Microsoft VibeASR.cpp, dengan transkripsi file, streaming waktu nyata, dan antarmuka web Gradio di Windows, Linux, dan macOS.
Diperbarui 10 Agu 2026  · 9 mnt baca

Jelajahi dengan AI

Buka di ChatGPTBuka di ClaudeBuka di Perplexity

Pengenalan ucapan otomatis berkembang pesat dalam beberapa tahun terakhir. Model speech-to-text yang dulu membutuhkan GPU bertenaga dan menghasilkan hasil yang tidak konsisten kini dapat memberikan transkripsi akurat di komputer sehari-hari. 

Pada saat yang sama, ukuran model menjadi lebih kecil, inferensi CPU menjadi lebih cepat, dan dukungan multibahasa meluas, sehingga pengguna mendapatkan kombinasi yang lebih baik antara kualitas transkripsi, kecepatan, aksesibilitas, dan privasi.

VibeVoice-ASR-BitNet dari Microsoft adalah contoh bagus dari kemajuan ini. 

Runtime VibeASR.cpp yang dioptimalkan memungkinan menjalankan speech-to-text multibahasa secara lokal pada komputer Windows, Linux, atau macOS tanpa bergantung pada GPU khusus atau mengirim rekaman ke layanan cloud.

Dalam panduan ini, Anda akan mempelajari cara menginstal dan membangun VibeASR.cpp, mengunduh model terkuantisasi, mentranskripsikan file audio dari command line, menjalankan server streaming persisten, dan menggunakan antarmuka web Gradio untuk mengunggah atau merekam ucapan. 

Apa itu Microsoft VibeASR.cpp? 

VibeASR.cpp adalah runtime inferensi C++ resmi Microsoft untuk VibeVoice-ASR-BitNet, model pengenalan ucapan otomatis multibahasa terkompresi yang dirancang untuk inferensi lokal yang efisien di CPU. 

Alih-alih menjadi model ucapan terpisah, VibeASR.cpp menyediakan mesin yang dioptimalkan untuk menjalankan model tersebut, memungkinkan transkripsi waktu nyata tanpa GPU khusus atau layanan ucapan berbasis cloud. 

Ini cocok untuk laptop, desktop, perangkat edge, dan sistem lain dengan sumber daya komputasi terbatas. 

Diagram arsitektur VibeVoice-ASR-BitNet

Sumber: microsoft/VibeVoice-ASR-BitNet

Agar deployment di CPU menjadi praktis, Microsoft mengganti komponen model bahasa Qwen2.5-7B yang digunakan arsitektur VibeVoice-ASR asli dengan model Qwen2.5-1.5B yang jauh lebih kecil. 

Mereka juga menerapkan metode kuantisasi berbeda pada dua komponen utama:

  • I8_S untuk encoder audio VAE
  • I2_S untuk model bahasa, dengan embedding presisi lebih tinggi

Optimasi ini mengurangi total ukuran model dari sekitar 4,62 GB menjadi 1,58 GB, sehingga praktis dijalankan di laptop dan komputer desktop. 

Meski terjadi pengurangan ukuran yang signifikan, model terkompresi hanya menunjukkan peningkatan relatif kecil sekitar 1–4 poin persentase dalam word error rate dibandingkan dengan arsitektur yang lebih besar. 

VibeASR.cpp menggunakan kerangka ggml, instruksi CPU kustom, dan operator fusion untuk meningkatkan kecepatan inferensi. 

Menurut benchmark Microsoft, runtime ini dapat berjalan 1,6–2,3 kali lebih cepat daripada Whisper.cpp pada ukuran model yang sebanding dan dapat mencapai transkripsi lebih cepat dari waktu nyata pada CPU yang didukung ketika cukup banyak thread digunakan.

Dalam benchmark CPU Microsoft, model mencapai RTF 0,63 dengan empat thread dan 0,42 dengan delapan thread, setara dengan kira-kira 1,59× dan 2,38× kecepatan waktu nyata

WER yang dilaporkan mencakup 8,25% pada MLC English, 21,36% pada audio headset AMI, 25,87% pada audio mikrofon-jauh AMI, dan 2,41% pada LibriSpeech clean, menunjukkan keseimbangan kuat antara akurasi transkripsi, ukuran model, dan performa CPU. 

1. Instal Alat Build yang Diperlukan

VibeASR.cpp berjalan sepenuhnya di CPU, jadi Anda tidak memerlukan GPU khusus. Anda hanya memerlukan komputer Windows, Linux, atau macOS yang didukung, Python 3.9 atau lebih baru, Git, kompiler C++, dan sekitar 4 GB ruang disk kosong untuk kode sumber, file build, dan model.

Proses build juga memerlukan CMake dan Ninja. 

Di Windows, opsi termudah adalah menggunakan w64devkit, yang menyediakan kompiler dan alat build dalam terminal yang telah dikonfigurasi sebelumnya. 

Di Linux, paket yang diperlukan dapat diinstal langsung melalui manajer paket sistem.

Windows

Unduh berkas .exe x64 terbaru dari halaman rilis w64devkit.

halaman rilis w64devkit terbaru

Berkas yang diunduh adalah arsip self-extracting. Jalankan dan ekstrak foldernya ke lokasi yang sederhana, misalnya:

C:\w64devkit

Lalu buka:

C:\w64devkit\w64devkit.exe

Ini akan meluncurkan terminal siap pakai yang berisi GCC, CMake, Make, dan Ninja. Anda dapat menggunakan terminal ini untuk langkah-langkah Windows berikutnya tanpa mengonfigurasi variabel lingkungan secara manual.

Linux

Di Ubuntu, Debian, dan distro Linux terkait, kompiler dan alat build yang diperlukan dapat diinstal dengan satu perintah:

sudo apt update
sudo apt install build-essential cmake ninja-build git python3 python3-venv

Ini akan menginstal kompiler GCC, CMake, Ninja, Git, Python, dan paket yang diperlukan untuk membuat virtual environment Python.

macOS

Di macOS, instal alat pengembangan baris perintah Apple:

xcode-select --install

Anda juga memerlukan Git, Python 3.9 atau lebih baru, CMake, dan Ninja. Cara termudah untuk menginstal alat yang tersisa adalah melalui Homebrew:

brew install git python cmake ninja

2. Clone VibeASR.cpp dan Siapkan Lingkungan Python

Proses penyiapan berikut sama untuk Windows, Linux, dan macOS

Satu-satunya langkah spesifik OS adalah perintah yang digunakan untuk mengaktifkan virtual environment Python.

Buka terminal Anda, pindah ke folder tempat Anda ingin menyimpan proyek, dan clone repositori VibeASR.cpp:

git clone --recursive https://github.com/microsoft/VibeASR.cpp.git
cd VibeASR.cpp

Meng-clone microsoft/VibeASR.cpp

--recursive juga mengunduh submodul llama.cpp yang diperlukan. Tanpanya, beberapa file yang dibutuhkan untuk membangun runtime inferensi akan hilang.

Buat virtual environment Python di dalam folder proyek. 

python -m venv .venv

Aktifkan dengan perintah sesuai sistem operasi Anda.

Windows menggunakan terminal w64devkit:

. .venv/Scripts/activate

Linux dan macOS:

source .venv/bin/activate

Setelah diaktifkan, terminal akan menampilkan (.venv) sebelum prompt perintah. Pastikan Python tersedia: 

python --version

Tingkatkan pip dan instal dependensi proyek: 

python -m pip install --upgrade pip

pip install -r requirements.txt

Dependensi ini mencakup paket Python yang digunakan oleh skrip penyiapan, proses pengunduhan model, dan antarmuka web Gradio lokal. 

3. Build VibeASR.cpp dan Unduh Model

VibeASR.cpp menyertakan skrip penyiapan yang menangani proses build C++ dan pengunduhan model.

Skrip ini mengompilasi executable command-line dan streaming, memasang paket GGUF yang diperlukan, dan mengunduh file model yang sudah dikuantisasi ke dalam direktori proyek.

Pastikan virtual environment Python aktif sebelum menjalankan skrip penyiapan.

Di Linux dan macOS, jalankan:

python setup_env.py

Di Windows, jalankan perintah berikut di dalam terminal w64devkit:

CMAKE_GENERATOR=Ninja python setup_env.py

Mengatur CMAKE_GENERATOR=Ninja memastikan CMake menggunakan sistem build Ninja alih-alih mencoba menggunakan Microsoft Visual C++, yang tidak tersedia di lingkungan w64devkit.

Skrip penyiapan akan:

  • Memasang paket Python gguf yang diperlukan.
  • Mengonfigurasi dan mengompilasi VibeASR.cpp.
  • Membangun executable inferensi dan streaming.
  • Mengunduh file model VibeASR yang sudah dikuantisasi.
  • Menyimpan model yang diunduh di dalam models/vibeasr.

Setelah proses selesai, executable inferensi utama akan tersedia di lokasi berikut.

Di Windows:

build/bin/asr_infer.exe

Di Linux dan macOS:

build/bin/asr_infer

Verifikasi bahwa executable berhasil dibangun dengan menampilkan opsi command-line yang tersedia.

Di Windows:

./build/bin/asr_infer.exe --help

Di Linux dan macOS:

./build/bin/asr_infer --help

Menu bantuan VibeASR.cpp

4. Uji Transkripsi File dan Streaming

Sekarang runtime dan model sudah siap, Anda dapat menguji dua metode transkripsi. 

Executable inferensi standar memproses satu file audio dan mengembalikan transkrip lengkap, sedangkan server streaming tetap memuat model dan menampilkan transkripsi secara progresif saat token dihasilkan.

Pertama, unduh rekaman sampel pendek dari dalam folder proyek VibeASR.cpp:

curl -L "https://homepages.inf.ed.ac.uk/htang2/notes/speech-samples/103-1240-0000.wav" -o recording.wav

File audio akan disimpan sebagai recording.wav di direktori proyek saat ini.

Transkripsikan file audio

Perintah inferensi standar memuat encoder audio dan model bahasa, memproses rekaman, dan mencetak transkripsi yang sudah selesai.

Di Windows, jalankan:

./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

Di Linux dan macOS, gunakan perintah yang sama tanpa ekstensi .exe:

./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

Transkripsikan File Audio menggunakan VibeASR.cpp

Opsi -t 6 menetapkan enam thread CPU untuk inferensi. Anda dapat menambah atau mengurangi angka ini sesuai prosesor Anda. 

Opsi --greedy memilih token yang paling mungkin pada setiap langkah decoding, menghasilkan hasil transkripsi yang konsisten.

Di komputer saya, rekaman 14,085 detik membutuhkan sekitar 13,7 detik untuk diproses:

RTF: 0.9726
Speed: approximately 1.03× real time

Real-time factor, atau RTF, membandingkan waktu pemrosesan dengan durasi audio. 

RTF di bawah 1.0 berarti rekaman ditranskripsikan lebih cepat daripada panjang pemutaran aslinya. Performa akan bervariasi tergantung pada prosesor, sistem operasi, jumlah thread, dan panjang rekaman.

Uji streaming token demi token

VibeASR.cpp juga menyertakan server streaming persisten. Server ini memuat dua file model sekali dan tetap aktif, memungkinkan Anda mengirim beberapa rekaman tanpa harus memulai ulang dan memuat ulang model setiap kali.

Outputnya mirip dengan streaming dari model bahasa besar. 

Alih-alih menunggu seluruh transkripsi selesai, Anda mulai melihat teks saat decoder menghasilkan setiap token. 

Beberapa token dapat mewakili kata lengkap, sementara yang lain mewakili bagian kata atau tanda baca, namun semuanya ditampilkan secara progresif hingga transkrip selesai.

Di Windows, mulai server dengan:

./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

Di Linux dan macOS, jalankan:

./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

Streaming Token demi Token siap.

Tunggu hingga server selesai memuat model dan menampilkan:

---READY---

Masukkan path ke file audio dan tekan Enter:

recording.wav

Transkripsi akan mulai muncul token demi token. Saat rekaman selesai diproses, server menampilkan:

---END---

Streaming Token demi Token menggunakan VibeASR.cpp

Anda kemudian dapat memasukkan path file audio lain tanpa memuat ulang model. Untuk menghentikan server, ketik:

exit

Alur kerja persisten ini sangat berguna saat mentranskripsikan banyak rekaman atau menghubungkan VibeASR.cpp ke aplikasi lain yang membutuhkan output transkripsi progresif.

5. Jalankan dan Uji Antarmuka Web

VibeASR.cpp menyertakan antarmuka web Gradio lokal untuk mengunggah file audio atau merekam ucapan dengan mikrofon Anda. Prosesnya sama di Windows, Linux, dan macOS, meskipun Windows menggunakan file executable yang diakhiri dengan .exe.

Dependensi yang dibutuhkan untuk antarmuka, termasuk Gradio, SoundFile, dan NumPy, sudah dipasang melalui requirements.txt.

Pertama, pastikan virtual environment aktif.

Windows menggunakan terminal w64devkit:

. .venv/Scripts/activate

Linux dan macOS:

source .venv/bin/activate

Di Windows, jalankan antarmuka dengan:

python demo/gradio_asr_demo.py \
  --port 7860 \
  --bin build/bin/asr_infer.exe \
  --server-bin build/bin/asr_stream_server.exe

Di Linux dan macOS, path executable default terdeteksi otomatis:

python demo/gradio_asr_demo.py --port 7860

Path model sudah dikonfigurasi di dalam skrip Gradio untuk semua sistem operasi, jadi Anda tidak perlu menyertakannya di perintah. 

Skrip juga mendukung path terpisah untuk executable inferensi standar dan server streaming.

Buka alamat berikut di peramban Anda:

http://127.0.0.1:7860

Jelajahi Antarmuka

Antarmuka memungkinkan Anda:

  • Memilih model CPU.
  • Menentukan jumlah thread CPU.
  • Beralih antara pemrosesan Online dan Offline.
  • Mengaktifkan greedy decoding atau menyesuaikan temperature dan Top-p.
  • Mengunggah file audio atau merekam langsung dari mikrofon Anda.
  • Menambahkan hotword opsional, seperti nama atau istilah teknis.
  • Melihat transkripsi, durasi audio, dan real-time factor.

Di sini, mode Online tidak berarti audio Anda dikirim ke layanan online.

Mode ini memproses rekaman lebih panjang secara progresif dalam potongan dan menggunakan asr_stream_server bila tersedia. 

Mode Offline memproses seluruh file audio sebelum menampilkan hasil.

Antarmuka WebUI VibASR.cpp

Uji rekaman pendek

Untuk uji pertama, saya merekam kalimat pendek langsung melalui mikrofon dan memilih mode Offline dengan empat thread CPU.

WebUI VibASR.cpp menguji rekaman kecil dengan menu offline

RTF sebesar 0,9584 berarti model membutuhkan sekitar 0,96 detik untuk memproses setiap detik audio. 

Ini kira-kira 1,04× waktu nyata, sehingga transkripsi selesai sedikit lebih cepat daripada durasi rekaman sebenarnya.

Uji rekaman lebih panjang

Saya juga menguji antarmuka dengan rekaman lebih panjang berisi sekitar 109,7 detik ucapan. Model berhasil menghasilkan transkripsi lengkap dan melaporkan:

RTF: 0.5305
Audio: 109.7s

WebUI VibASR.cpp mentranskripsi audio besar dengan opsi offline

Ini berarti model membutuhkan sekitar 0,53 detik untuk memproses setiap detik audio. Rekaman penuh memerlukan sekitar 58 detik untuk ditranskripsikan, memberikan kecepatan sekitar 1,88× waktu nyata.

Penutup

Saya terkesan dengan betapa praktisnya pengenalan ucapan lokal saat ini. 

Bahkan di CPU lama, VibeASR.cpp dapat mentranskripsikan audio mendekati atau lebih cepat dari waktu nyata tanpa memerlukan GPU, memori besar, atau ruang penyimpanan banyak. 

Executable yang dikompilasi juga dapat diintegrasikan ke dalam aplikasi Python, dibungkus dalam endpoint FastAPI, atau digunakan sebagai mesin transkripsi untuk alat lokal yang lebih besar.

Pengaturan utama yang perlu dipertimbangkan adalah jumlah thread CPU yang ditetapkan ke proses. 

Anda juga perlu memilih antara mode online, yang melakukan streaming transkrip secara progresif, dan mode offline, yang mengembalikan transkripsi lengkap setelah memproses audio.

Proses penyiapan masih bisa dibuat lebih mudah, terutama di Windows, Linux, dan macOS. 

Karena proyek ini masih berkembang, saya berharap instalasi dan dukungan binary siap pakai akan meningkat seiring waktu. Setelah binary mandiri yang stabil tersedia, saya bisa melihat diri saya menggunakan model ini dalam lebih banyak proyek speech-to-text lokal.

Saya juga merekomendasikan untuk melihat tutorial GPT Live Transcribe API kami.

FAQs

Bahasa apa saja yang sebenarnya didukung model VibeASR?

Model VibeVoice-ASR secara native mendukung lebih dari 50 bahasa. Ini termasuk bahasa Inggris, Tionghoa, Prancis, Italia, Korea, Portugis, dan Vietnam. Model ini tidak memerlukan pengaturan bahasa eksplisit dan dapat secara otomatis menangani "code-switching" (ketika penutur secara alami mencampur beberapa bahasa dalam satu kalimat).

Apakah saya perlu mengonversi file MP3 atau video saya sebelum ditranskripsikan?

Jika Anda menggunakan executable command-line asr_infer secara langsung, executable ini mengharapkan file .wav (biasanya 16kHz, 16-bit mono). Jika Anda memiliki audio dalam format lain seperti MP3, M4A, atau FLAC, Anda perlu mengonversinya ke WAV terlebih dahulu menggunakan alat seperti FFmpeg sebelum diberikan ke CLI.

Bisakah model mengidentifikasi pembicara yang berbeda atau menghasilkan cap waktu tingkat kata?

Arsitektur dasar VibeVoice-ASR dirancang secara eksplisit untuk menghasilkan output terstruktur yang berisi "Siapa" (diarisasi pembicara), "Kapan" (cap waktu), dan "Apa" (konten) dalam satu kali proses. Namun, executable inferensi C++ yang ringan (VibeASR.cpp) saat ini berfokus pada transkripsi teks mentah progresif. Untuk mendapatkan output JSON terstruktur lengkap dengan ID pembicara dan cap waktu, Anda biasanya perlu menjalankan model menggunakan pustaka Python transformers.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik

Kursus Teratas DataCamp

Kursus

Pemrosesan Bahasa Lisan dengan Python

4 Hr
9.1K
Pelajari cara memuat, mengolah, dan mentranskrip ucapan dari berkas audio mentah menggunakan Python.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat Lebih BanyakLihat Lebih Banyak