Adventure Time'ın sevimli karakteri BMO, bir Raspberry Pi 5 ve tamamen cihaz üzerinde çalışan yerel yapay zeka modelleriyle konuşabilen bir asistana dönüştürülebiliyor. Projenin çekici yanı, tüm ses işlemenin ve dil modelinin internet bağlantısı olmadan Pi üzerinde çalışması: konuşmalar buluta gönderilmediği için gecikme düşük, gizlilik ise yüksek kalıyor.
Bu yazıda BMO'nun arkasındaki mimariyi (ses işleme zinciri, yerel dil modeli, güç yönetimi ve kasa) ve kendi versiyonunuzu kurarken dikkat etmeniz gereken noktaları adım adım inceliyoruz.
Neden Yerel Yapay Zeka?
Yerel (on-device) yapay zeka, tüm işlemenin cihazın kendi donanımında yapılması demektir. Bulut tabanlı bir asistanda ses kaydınız internete gönderilir, uzaktaki sunucuda işlenir ve yanıt geri gelir. Yerel bir kurulumda ise bu döngünün tamamı cihazın içinde tamamlanır.
Bu yaklaşımın üç somut avantajı vardır: veriler cihazdan çıkmadığı için gizlilik korunur; internet kesintisinde bile sistem çevrimdışı çalışır; ve ağ gecikmesi ortadan kalktığı için yanıt süresi kısalır. Ayrıca aylık bir servis ücreti ya da API kotası derdi olmaz. Karşılığında, modelin boyutu ve hızının cihazın belleği ile işlemci gücüyle sınırlı olması gibi bir ödünleşme kabul edilir; buluttaki dev modeller kadar geniş bilgiye sahip olmayan, daha küçük modellerle çalışırsınız.
Bu sınır, projenin neden güçlü bir kart olan Raspberry Pi 5 etrafında kurulduğunu açıklar: daha küçük kartlar, yerel bir dil modelini akıcı çalıştırmakta zorlanır.
Bu tür bir kurulum aynı zamanda öğretici bir değere sahiptir: bulut asistanlarında gizli kalan adımlar (sesin nasıl metne çevrildiği, modelin nasıl yanıt ürettiği, metnin nasıl seslendirildiği) burada tek tek görünür ve müdahale edilebilir hâle gelir. Böylece proje, hazır bir ürünü kullanmaktan çok, bir asistanın nasıl çalıştığını içeriden anlamayı sağlar.
Raspberry Pi 5'in Rolü
Raspberry Pi 5, önceki nesillere göre belirgin biçimde daha yüksek işlem gücü sunan dört çekirdekli bir ARM işlemciye sahiptir ve farklı RAM seçenekleriyle (örneğin 4 GB ve 8 GB) gelir. Yerel bir dil modelini çalıştırmak büyük ölçüde bellek gerektirdiğinden, daha yüksek RAM'li sürüm daha büyük modellerin belleğe sığmasına imkan tanır. Model çıkarımı sırasında modelin ağırlıkları RAM'de tutulur; bu yüzden pratikte 8 GB'lık sürüm, daha rahat bir alan sağlar.
Pi 5'in çok çekirdekli yapısı, ses tanıma ile dil modeli çıkarımının (inference) eş zamanlı yürütülmesine yardımcı olur; böylece kullanıcı konuşurken sistem paralel görevleri daha rahat yönetir. Depolama tarafında, işletim sistemi ve model dosyaları için hızlı bir microSD kart yeterli olsa da, Pi 5'in PCIe arayüzü üzerinden bağlanabilen bir NVMe SSD, büyük model dosyalarının yüklenme süresini kısaltır. Yoğun kullanımda işlemcinin ısınması performansı düşürebileceğinden (termal kısma), aktif soğutma (fan ya da soğutuculu kasa) önerilir. Kart, güç açısından da öncekilerden daha talepkardır; yeterli akım verebilen bir USB-C güç kaynağı kullanmak, düşük gerilim uyarılarını ve ani yeniden başlatmaları önler.
Ses İşleme Zinciri: STT, LLM, TTS
BMO'nun sizi anlayıp yanıt verebilmesi, birbirine bağlı üç aşamalı bir zincire dayanır:
- STT (Konuşmadan Metne): Mikrofondan gelen ses, metne çevrilir. Bu görev için Vosk veya Whisper (whisper.cpp) gibi cihaz üzerinde çalışabilen modeller kullanılır.
- LLM (Dil Modeli): Metne çevrilen komut, yerel bir dil modeline verilir. Model, uygun yanıtı metin olarak üretir.
- TTS (Metinden Konuşmaya): Üretilen metin, sesli yanıta dönüştürülür. Piper, PicoTTS veya benzeri hafif motorlar bu iş için uygundur.
Zincirin toplam gecikmesi, üç aşamanın süresinin toplamıdır; bu yüzden her aşamada mümkün olan en hafif modeli seçmek, akıcı bir diyalog için önemlidir. Sistem sürekli her sesi işlemeye çalışmaz; genellikle bir anahtar kelime (wake word) ya da fiziksel bir düğme dinlemeyi başlatır. Ardından bir ses etkinliği algılama (VAD) adımı, konuşmanın ne zaman bittiğini tespit ederek kaydı STT'ye iletir. Mikrofon tarafında ReSpeaker gibi çok mikrofonlu HAT kartları, gürültü bastırma ve yön belirleme özellikleriyle tanıma doğruluğunu artırabilir.
Hoparlör ve mikrofonun aynı gövdede olması, akustik geri besleme (echo) sorununa yol açabilir: BMO konuşurken kendi sesini mikrofondan duyup yanlışlıkla işleyebilir. Bunu önlemek için konuşma sırasında mikrofonun geçici olarak susturulması ya da bir yankı bastırma (AEC) adımı kullanılır. Mikrofonun hoparlörden fiziksel olarak biraz uzağa yerleştirilmesi de sorunu azaltan basit bir önlemdir.
Model Seçimi ve Performans Beklentisi
Yerel çalışacak dil modelini seçerken iki değişken belirleyicidir: modelin parametre sayısı ve niceleştirme (quantization) düzeyi. TinyLlama, Phi ailesi veya Llama'nın küçük (birkaç milyar parametrelik) sürümleri gibi hafif modeller, Pi 5 üzerinde makul sürelerde yanıt üretebilir. Model büyüdükçe verdiği yanıtların kalitesi artar; ancak bellek ihtiyacı ve yanıt süresi de büyür.
Niceleştirme, modelin ağırlıklarını daha az bit ile temsil ederek dosya boyutunu ve bellek kullanımını düşürür. Örneğin 4 bitlik bir niceleştirme, modeli belleğe sığdırmayı kolaylaştırır ama çok agresif niceleştirme yanıt kalitesini bir miktar düşürebilir. Pratikte, kartın belleğine sığan ve kabul edilebilir hızda çalışan en yüksek kaliteli modeli bulmak bir denge işidir. Yanıt hızının bulut servislerine kıyasla daha düşük olacağını baştan kabul etmek gerekir; bu, yerel ve çevrimdışı çalışmanın karşılığında ödenen bedeldir.
Modelin "kişiliği" ise büyük ölçüde ona verilen sistem talimatıyla (system prompt) belirlenir. BMO gibi neşeli bir karaktere kısa ve eğlenceli yanıtlar verdirmek için, model her konuşma başında bu rolü tanımlayan bir metinle yönlendirilir. Ayrıca modelin bir seferde ne kadar geçmişi hatırlayabileceğini belirleyen bağlam penceresi (context window) sınırlıdır; uzun sohbetlerde eski mesajların özetlenmesi ya da bırakılması gerekebilir. Küçük yerel modellerde bu pencere, bulut modellerine kıyasla daha dardır ve bu, sohbetin ne kadar "hafızalı" olacağını doğrudan etkiler.
Bileşen Listesi
Tipik bir BMO kurulumunun temel bileşenleri ve işlevleri şöyledir:
| Bileşen | Örnek | İşlev |
| Ana kart | Raspberry Pi 5 (4 / 8 GB) | Tüm işlemenin merkezi; modelleri çalıştırır |
| Dil modeli | llama.cpp ile niceleştirilmiş küçük model | Komutu yorumlar, yanıt üretir |
| STT | Vosk / Whisper | Konuşmayı metne çevirir |
| TTS | Piper / PicoTTS | Metni sese çevirir |
| Mikrofon | USB mikrofon veya ReSpeaker HAT | Ses girişi |
| Hoparlör | USB ses kartı + küçük hoparlör | Ses çıkışı |
| Ekran | Küçük LCD / OLED | BMO'nun "yüzü", durum göstergesi |
| Depolama | Hızlı microSD veya NVMe SSD | İşletim sistemi ve model dosyaları |
| Güç | LiPo + güç yönetim / UPS kartı | Taşınabilir çalışma |
| Kasa | 3B baskı gövde | Bileşenleri barındırır, BMO görünümü verir |
Yazılım Yığını
Kontrol yazılımı genellikle Python ile yazılır: bir betik mikrofonu dinler, sesi STT'ye verir, çıkan metni dil modeline gönderir ve dönen yanıtı TTS ile seslendirir. Yerel dil modeli tarafında büyük dil modellerinin niceleştirilmiş sürümleri tercih edilir; niceleştirme, modelin bellek ayak izini küçülterek Pi gibi sınırlı donanımda çalışmasını mümkün kılar. llama.cpp bu amaçla yaygın kullanılan bir çalışma zamanıdır ve ARM işlemciler için iyi eniyilenmiştir.
İşletim sistemi olarak Linux tabanlı Raspberry Pi OS kullanılır; Python kütüphaneleri ve model dosyaları bu sistem üzerine kurulur. Modeller genellikle niceleştirilmiş dosya biçimlerinde (örneğin GGUF) dağıtıldığından, doğru boyuttaki modeli kartın belleğine göre seçmek gerekir. Ses giriş/çıkışı için ALSA yapılandırmasının doğru olması, gürültü ve gecikme sorunlarını baştan azaltır.
Güç Yönetimi ve Taşınabilirlik
BMO'yu fişe bağımlı olmaktan çıkarmak için bir LiPo batarya ve uygun bir güç yönetim kartı (UPS HAT benzeri) kullanılır. Bu kart hem bataryayı güvenli şarj eder hem de Pi'ye kararlı 5V sağlar. Yerel dil modeli çıkarımı işlemciyi zorladığı için güç tüketimi anlık olarak yükselebilir; bataryayı ve güç kartını bu tepe tüketime göre boyutlandırmak, düşük gerilime bağlı ani kapanmaları önler. Batarya kapasitesini (mAh) ne kadar büyük seçerseniz, tek şarjda çalışma süresi de o kadar uzar.
Kasa, Ekran ve Kişiselleştirme
Orijinal BMO görünümü, 3B baskı bir gövdeyle elde edilir. Ön yüzdeki küçük LCD veya OLED ekran, BMO'nun "yüzü" olarak yüz ifadeleri veya işlem durumunu (dinliyor, düşünüyor, konuşuyor) gösterecek şekilde programlanabilir. Bu görsel geri bildirim, sistemin ne yaptığını kullanıcıya anlık olarak ilettiği için kullanışlıdır. Modüler tasarım sayesinde ileride farklı sensörler, daha kaliteli bir mikrofon veya daha büyük bir dil modeli eklemek mümkündür.
Kimler İçin Uygun ve Nasıl Başlanır?
Proje, temel Linux ve Python bilgisi olan makerlar için orta zorluktadır. Başlamadan önce tüm bileşenleri ve yazılım gereksinimlerini listelemek, eksik parça nedeniyle işin yarıda kalmasını önler. İzlenebilecek mantıklı bir yol şöyledir: önce Raspberry Pi OS kurulur, ardından ses giriş/çıkış donanımı ayrı ayrı test edilir, sonra STT-LLM-TTS zincirinin her halkası tek tek çalıştırılır ve en sonunda hepsi tek bir Python akışında birleştirilir. Her aşamayı ayrı ayrı doğrulamak, sorun çıktığında hangi halkada olduğunu bulmayı kolaylaştırır.
Proje ölçeklenebilir olduğu için basit bir sürümle başlayıp zamanla geliştirilebilir. İlk aşamada yalnızca metin tabanlı bir sohbet kurup çalıştığından emin olduktan sonra, sırasıyla ses girişi, ses çıkışı ve ekran animasyonları eklenebilir. Bu kademeli yaklaşım, hem motivasyonu korur hem de her yeni parçanın ayrı ayrı test edilmesini sağlar.
Bazı bağlantılar için temel lehimleme gerekebilir; 3B baskı kasa isteğe bağlıdır ve baskı hizmeti alınarak da temin edilebilir.
Sıkça Sorulan Sorular
Raspberry Pi 5 neden gerekli; daha eski bir Pi olmaz mı?
Yerel dil modeli çıkarımı işlemci ve bellek yoğun bir iştir. Pi 5'in artan işlem gücü ve RAM seçenekleri, modelin akıcı çalışmasını sağlar; daha eski kartlarda yanıtlar belirgin biçimde yavaşlar ya da büyük modeller belleğe sığmaz.
Tamamen çevrimdışı çalışır mı?
Evet. STT, dil modeli ve TTS bileşenlerinin tümü cihaz üzerinde çalıştığından, kurulum tamamlandıktan sonra internet gerekmez. Bu hem gizliliği korur hem de bağlantı kesintilerinden etkilenmemeyi sağlar.
Yanıtlar bulut asistanları kadar hızlı mı?
Genellikle daha yavaştır. Yerel donanım, veri merkezindeki güçlü sunucularla yarışamaz; bu yüzden yanıt süresi ve model bilgisi daha sınırlıdır. Buna karşılık gizlilik, çevrimdışı çalışma ve ek maliyet olmaması gibi avantajlar elde edersiniz.
Hangi model boyutu Pi 5 için uygundur?
Genellikle birkaç milyar parametreye kadar olan, niceleştirilmiş modeller Pi 5'te makul sürelerde çalışır. 8 GB RAM'li sürüm daha büyük modellere alan tanır; ancak model büyüdükçe yanıt süresi de uzar. Bu yüzden en iyi seçim, kartın belleğine sığan ve kabul edilebilir hızda yanıt veren en yetenekli modeldir.
Ne kadar sürede tamamlanır?
Elektronik ve programlama deneyiminize bağlıdır. Temel bilgisi olan biri için parça tedariki, montaj ve yazılım kurulumu dahil birkaç gün ile birkaç hafta arası bir süre gerçekçidir.
Kendi BMO'nuzu kurmak, donanım ve yazılım entegrasyonunu tek bir projede birleştiren bütünsel bir egzersizdir. En değerli kazanım, yerel yapay zekanın nasıl çalıştığını, ses zincirinin her halkasını ve güç ile ısı yönetimi gibi pratik kısıtları elle deneyimlemektir.
Yorumlar 0
Yorum Bırakın