Talk-Llama
(github.com/ggerganov)- Talk-Llama, terminalde mikrofona konuştuğunuzda Whisper’ın sesi metne dönüştürdüğü ve LLaMA’nın yanıt verdiği bir
whisper.cppörneğidir - Mikrofon sesini yakalamak için SDL2 gerekir ve derleme sırasında CMake seçeneği
WHISPER_SDL2=ONetkinleştirilmelidir - Çalıştırırken
-mwile Whisper modeli belirtilir; gerçek zamanlı sohbet içinbaseveyasmallmodeli önerilir -mliçin ggml uyumlu LLaMA modeli belirtilir ve model hazırlama yöntemi içinllama.cppyönergelerinin izlenmesi gerekir--session FILEkullanıldığında model durumu kaydedilip yüklenebilir; böylece uzun sohbetlerde veya birden fazla çalıştırma boyunca bağlamın korunması mümkün olur
Terminalde sesli sohbet örneği
whisper.cpp/examples/talk-llama, terminalde LLaMA yapay zekasıyla sesli sohbet etmeye yönelik bir örnektir- 2 Kasım 2023 itibarıyla performans demosunun M2 Ultra üzerinde Whisper Medium + LLaMA v2 13B Q8_0 kombinasyonuyla çalıştırıldığı belirtilmiştir
- Önceki demo, CPU üzerinde çalıştırma örneği olarak ayrı bir videoyla sunulmuştur
Derleme ve çalıştırma akışı
whisper-talk-llama, mikrofon sesini yakalamak için SDL2 kütüphanesine bağımlıdır- İşletim sistemine göre SDL2 kurulum örnekleri şöyledir
- Debian tabanlı Linux:
sudo apt-get install libsdl2-dev - Fedora Linux:
sudo dnf install SDL2 SDL2-devel - Mac OS:
brew install sdl2
- Debian tabanlı Linux:
- CMake derlemesinde
WHISPER_SDL2=ONseçeneği etkinleştirilircmake -B build -S . -DWHISPER_SDL2=ONcmake --build build --config Release
- Çalıştırma örneğinde Whisper modeli, LLaMA modeli, prompt ve iş parçacığı sayısı birlikte belirtilir
./build/bin/whisper-talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8
Model belirtme seçenekleri
-mwargümanı kullanılacak Whisper modelini belirtir- Gerçek zamanlı deneyim için
baseveyasmallmodeli önerilir
- Gerçek zamanlı deneyim için
-mlargümanı kullanılacak LLaMA modelini belirtirggmluyumlu LLaMA modelinin nasıl edinileceği için llama.cpp yönergelerine bakılması istenir
Oturum dosyasıyla bağlamı sürdürme
whisper-talk-llama, daha tutarlı ve kesintisiz sohbetler için oturum yönetimini destekler- Önceki etkileşimlerin bağlamını koruyarak kullanıcı isteklerini daha doğal biçimde anlayıp yanıtlayabilir
- Oturum desteği, çalıştırma sırasında
--session FILEkomut satırı seçeneğiyle etkinleştirilir- Her etkileşimden sonra
whisper-talk-llamamodel durumu belirtilen dosyaya kaydedilir - Dosya yoksa yeni oluşturulur
- Dosya varsa model durumu bu dosyadan yüklenir ve önceki oturum devam ettirilir
- Her etkileşimden sonra
- Uzun sohbetlerde veya birden fazla oturum boyunca AI assistant ile etkileşime girerken önceki etkileşimleri hatırlamak ve daha alakalı bağlamsal yanıtlar sunmak için kullanışlıdır
- Örnek çalıştırma:
./build/bin/whisper-talk-llama --session ./my-session-file -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8
1 yorum
Hacker News yorumları
Bunu burada görmek eğlenceli :)
Videoda gösterilenden bu yana Apple Silicon performansı muhtemelen çok daha iyi hale gelmiştir. whisper.cpp artık tamamen GPU üzerinde çalışıyor ve son birkaç ayda llama.cpp’nin üretim hızı da ciddi ölçüde iyileşti
Performans gerçekten de etkileyici
Harika. Yakın zamanda bir projede Llama’yı açık kaynak bir ses sentezi modeline bağlamayı denedim; içinde pek çok ilginç mühendislik unsuru vardı
Kişisel olarak en kullanışlı kodlama yardımcıları, zor düşünme veya problem çözme işini üstlenmeye çalışmak yerine, docstring’lerden argüman ve tip üretmek ya da tersini yapmak gibi elle yapılan işleri azaltan araçlar. Daha karmaşık işler için yardımcı araca oldukça iyi bir başlangıç noktası vermek gerekiyor
Kod yazarken sık sık kendi kendime konuşurum; böyle bir araç söylediklerimi bağlam vektörü olarak embedding’e dönüştürüp ek girdi olarak kullanabilse ve modele daha iyi bir başlangıç noktası verebilse gerçekten fütüristik ve faydalı olurdu. Copilot’u geç benimseyenlerdenim ve her zaman kullanmıyorum, ama benzer bir şey bilen varsa merak ederim
270 gün içinde açık ağırlık önerisi gerçeğe dönüşürse, birkaç ay sonra fiilen yasaklanabilir de
Benim bulabildiğim kadarıyla açık ağırlıklı modelleri yasaklayan hiçbir şey yok. Nihai tavsiyelerde “yasaklayın” denmesi için de pek sebep görünmüyor
Örneğin hükümetin açık ağırlıklı modelleri benimsemenin yükünü çok artırıp OpenAI satın almayı çok daha cazip hale getirecek şekilde yerleşik oyuncuların lehine tavsiyeler getirmesini hayal edebilirim. Ama bu, başlangıçta söylenen şeyden farklı
Kararname oldukça okunabilir görünüyor; metinde benim kaçırdığım bir şey mi var?
https://www.whitehouse.gov/briefing-room/presidential-action...
Kapsamın açık uçlu olmasının endişe verici olduğuna katılıyorum, ama gerçek yasak nerede?
Arch ve Debian’da
./talk-llamaçalıştırınca floating point exception alıyorum.sdl2libveffmpegi de kontrol ettim, ilgili issue’ya (https://github.com/ggerganov/whisper.cpp/issues/1325) da baktım ama çözülmedi. Bunu yaşayan başka biri var mı?https://github.com/ggerganov/whisper.cpp/issues/352#issuecom...
Neyin değiştiğinden emin değilim ama temel olarak
ffmpegvelibsdl2-devi kaldırıp depo kök dizinindemakeçalıştırdım. Sonralibsdl2veffmpegi kurupmake talk-llamayaptım4 çekirdekli i7-8550U ve 16 GB RAM ile epey yavaş
Depo kök dizininde kabaca şöyle yaptım:
$ sudo apt purge ffmpeg$ make clean$ git pull$ make$ sudo apt install libsdl2-dev$ make talk-llama$ ./talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-2-13b.Q4_0.gguf -p "t0mk" -t 8\n\nLlama’nın üretimi bitirmesini beklemeden metin akışını alıp hemen seslendiren bir metinden sese çözümü yok mu?
Model tamponu, ses sentezi motoru duraksamayacak kadar hızlı doldurursa mümkün olabilir gibi görünüyor
LLM yanıtının tamamı bitene kadar beklemek yerine, üretildiği anda yaklaşık 6 tokenlık gruplar halinde ses sentezine akış olarak gönderirsek gecikmeyi azaltabilir miyiz?
Şu anda yalnızca temel bir uyarlamalı eşik kullanan konuşma sonu algılama daha iyi hale getirilebilir; büyük LLM hesaplama yaparken küçük bir LLM’in genel ve hızlı yanıtlar üretmesi de sağlanabilir. Ses sentezi de chunk ya da cümle bazında akış olarak verilebilir
Bu tür chatbot’ların daha iyi açık kaynak sürümlerinden birinin https://github.com/yacineMTB/talk olduğunu düşünüyorum. Şu anda benzer projelerin daha fazla olması da çok olası
Llama için en iyi sohbet arayüzü nedir? Bir 3090’ım var; terminalden hızlı kodlama işleri için bir model çalıştırmayı denemek istiyorum
pacman -S ollamaollama serveollama run llama2:13b 'insert prompt'https://ollama.ai/
https://github.com/cogentapps/chat-with-gpt
ElevenLabs ve OpenAI API kullanacak şekilde yapılmış gibi görünüyor, ama yerel Whisper.cpp ve Llama’ya göre ayarlamak da kolay olabilir
İşe alım yapıyorlar ve açıklanmış bir gelir modeli yok; bu yüzden yakında ücretsiz özelliklerin bir kısmını ücretli yapmaları ya da bilerek kısıtlamaları gibi değişiklikler bekliyorum. Yine de tamamen llama.cpp’ye dayanan ücretsiz LLM’ler için ince uygulamaların sağlayıcı kilidi yaratması zor. Özelliklerden çok açık kaynak önceliğinizse ben de ollama’yı öneririm
Teknik sorular için şu anda Wizard’ın öne çıktığını düşünüyorum
ollama, yerel açık kaynak LLM çalıştırmak için gerçekten tatmin edici; peki Whisper ya da en yeni açık kaynak ses sentezi modelleri tarafında bunun karşılığı ne? Whisper’ı yerelde bu kadar basit kurmayı sağlayan bir proje pek bilmiyorum
WhisperScript adlı şey de oldukça iyi görünüyordu: https://github.com/openai/whisper/discussions/1028
Yine de WhisperX kurulumu o kadar zor değil. Birkaç ay önce derlediğim adım adım notlar burada: https://llm-tracker.info/books/logbook/page/transcription-te...
https://goodsnooze.gumroad.com/l/macwhisper
Ses sentezi için coqui, birçok dilde kullanıcı deneyimi ve modeller açısından en iyisi; ancak kalitesi ticari ses sentezi sağlayıcılarıyla aynı seviyede değil
Bunun ne yapabildiğini basitçe açıklayabilir misiniz? Sohbetin bağlamını öğrenip koruyarak bir tür uzun süreli bellek oluşturabilir mi?
LLM’in bağlam sınırı, kullanıcının seçtiği modele ve ayarlara bağlıdır. Örneğin Llama 2, Wizard Vicuna vb. hangi modeli kullandığınıza ve bağlam penceresini nasıl ayarladığınıza göre değişir. LLM’in kullanıcıya “yanıt vermekten” çok, kullanıcı ile faydalı bir assistant arasındaki konuşma geçmişinde en olası sonraki içeriği tahmin ettiğini; bunun sonucunda da faydalı bir assistant gibi davranmayı başarıp gerçekten faydalı bir assistant’a dönüştüğünü düşünmek kafa karıştırıcı olabilir
Pipeline’ı değiştirirseniz bu tür davranışlar da mümkün gibi görünüyor. Yapı
ses tanıma → Wrapper[Llama] → ses sentezihaline gelir ve Wrapper, Llama’nın işini yapmasına izin verirken giriş metnine ek işlemler uygulayabilirse işler ilginçleşirWrapper konuşmayı analiz edip “bu kişinin adı Bob, erkek, 35 yaşında, köpekleri seviyor ve düzenli olmayı tercih ediyor; saat 17.00’de kızını araması için hatırlatma istiyor; Antarktika mafyasının sızma ajanı ve kendisiyle güçlü bir Polonya aksanıyla konuşulmasını tercih ediyor” gibi temel unsurları çıkarabilir ve buna göre davranabilir
Örneğin HomeAssistant üzerinden saat 17.00 için hatırlatma oluşturabilir, ses sentezi motorunu Polonya aksanına ayarlayabilir ve sonraki çalıştırmaların başlangıç konuşma geçmişini değiştirebilir. İç sohbet konuşmasına kişinin adını eklemek, sonraki konuşmanın ön tanıtımına ilgi alanlarını ve kişiliğini sıkıştırılmış biçimde vermek gibi
Böylece başka araçların gerçekleştirdiği eylemler üzerinden etkileşimlilik, sonraki konuşma geçmişini değiştirerek de süreklilik oluşturulabilir
Bu gerçekten güçlü bir ELIZA havası veriyor