Talk-Llama
(github.com/ggerganov)- Talk-Llama adalah contoh
whisper.cppdi mana saat Anda berbicara lewat mikrofon di terminal, Whisper mengubah suara menjadi teks dan LLaMA merespons - Untuk menangkap audio mikrofon diperlukan SDL2, dan saat build opsi CMake
WHISPER_SDL2=ONharus diaktifkan - Saat menjalankan, tentukan model Whisper dengan
-mw; untuk percakapan real-time, modelbaseatausmalldirekomendasikan - Pada
-ml, tentukan model LLaMA yang kompatibel dengan ggml; cara menyiapkan model mengikuti panduanllama.cpp - Dengan
--session FILE, status model dapat disimpan dan dimuat kembali sehingga konteks tetap terjaga dalam percakapan panjang atau di beberapa kali eksekusi
Contoh percakapan suara di terminal
whisper.cpp/examples/talk-llamaadalah contoh untuk bercakap-cakap dengan AI LLaMA lewat suara di terminal- Demo performa per 2 November 2023 ditampilkan berjalan di M2 Ultra dengan kombinasi Whisper Medium + LLaMA v2 13B Q8_0
- Demo sebelumnya disediakan sebagai video terpisah untuk contoh eksekusi di CPU
Alur build dan eksekusi
whisper-talk-llamabergantung pada library SDL2 untuk menangkap audio mikrofon- Contoh instalasi SDL2 per sistem operasi adalah sebagai berikut
- Linux turunan Debian:
sudo apt-get install libsdl2-dev - Fedora Linux:
sudo dnf install SDL2 SDL2-devel - Mac OS:
brew install sdl2
- Linux turunan Debian:
- Pada build CMake, aktifkan opsi
WHISPER_SDL2=ONcmake -B build -S . -DWHISPER_SDL2=ONcmake --build build --config Release
- Contoh eksekusi menetapkan model Whisper, model LLaMA, prompt, dan jumlah thread sekaligus
./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
Opsi penentuan model
- Argumen
-mwmenentukan model Whisper yang akan digunakan- Untuk pengalaman real-time, model
baseatausmalldirekomendasikan
- Untuk pengalaman real-time, model
- Argumen
-mlmenentukan model LLaMA yang akan digunakan- Untuk cara mendapatkan model LLaMA yang kompatibel dengan
ggml, rujuk panduan llama.cpp
- Untuk cara mendapatkan model LLaMA yang kompatibel dengan
Melanjutkan konteks dengan file sesi
whisper-talk-llamamendukung manajemen sesi untuk percakapan yang lebih konsisten dan berkelanjutan- Dengan mempertahankan konteks dari interaksi sebelumnya, sistem dapat memahami dan menjawab permintaan pengguna secara lebih alami
- Dukungan sesi diaktifkan saat eksekusi dengan opsi command-line
--session FILE- Setelah setiap interaksi, status model
whisper-talk-llamadisimpan ke file yang ditentukan - Jika file belum ada, file baru akan dibuat
- Jika file sudah ada, status model dimuat dari file tersebut untuk melanjutkan sesi sebelumnya
- Setelah setiap interaksi, status model
- Ini berguna saat berinteraksi dengan AI assistant dalam percakapan panjang atau lintas beberapa sesi, karena dapat mengingat interaksi sebelumnya dan memberikan respons kontekstual yang lebih relevan
- Contoh eksekusi:
./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
Output suara dan umpan balik
- Untuk mendengarkan respons teks yang dihasilkan sebagai suara, diperlukan alat TTS
- Anda dapat menggunakan engine TTS apa pun yang diinginkan, dan menyesuaikan skrip speak sesuai kebutuhan
- Pengaturan default menggunakan
saydi MacOS atau SpeechSynthesizer di Windows - Umpan balik diarahkan ke GitHub Discussion #672
1 komentar
Komentar Hacker News
Menarik juga melihat ini di sini :)
Dibandingkan yang ditampilkan di videonya, performa Apple Silicon sekarang pasti sudah jauh lebih baik. whisper.cpp kini berjalan sepenuhnya di GPU, dan kecepatan generasi llama.cpp juga meningkat pesat dalam beberapa bulan terakhir
Performanya sendiri juga benar-benar mengesankan
Keren. Dalam proyek terbaru saya, saya sempat menghubungkan Llama ke model sintesis suara open source, dan ada banyak aspek rekayasa yang menarik
Menurut saya, alat bantu coding yang paling berguna bukanlah yang mencoba menggantikan pemikiran sulit atau pemecahan masalah, melainkan yang mengurangi beban kerja manual, misalnya dengan membuat argumen dan tipe dari docstring, atau sebaliknya. Untuk tugas yang lebih kompleks, ternyata kita tetap harus memberi titik awal yang cukup bagus pada alat bantu tersebut
Saat coding saya cukup sering bicara sendiri, jadi kalau ada alat seperti ini yang bisa meng-embed ucapan saya sebagai vektor konteks untuk dipakai sebagai input tambahan dan memberi model titik awal yang lebih baik, itu akan terasa sangat futuristis dan berguna. Saya termasuk terlambat menerima Copilot dan tidak selalu memakainya, tapi kalau ada yang tahu sesuatu yang mirip, saya penasaran
Kalau usulan open weight itu benar-benar jadi kenyataan dalam 270 hari, mungkin beberapa bulan kemudian pada praktiknya malah bisa dilarang
Setidaknya dari yang saya temukan, sama sekali tidak ada isi tentang melarang model open weight. Saya juga tidak melihat alasan kuat kenapa rekomendasi akhirnya harus berisi “larang saja”
Misalnya, saya masih bisa membayangkan rekomendasi yang menguntungkan pemain lama, seperti pemerintah membuat beban adopsi model open weight terlalu tinggi sehingga membeli OpenAI terlihat jauh lebih menarik. Tapi itu berbeda dari yang tadi dikatakan
Executive order itu tampaknya cukup mudah dibaca, apakah ada bagian di teksnya yang saya lewatkan?
https://www.whitehouse.gov/briefing-room/presidential-action...
Saya setuju bahwa pendekatan dengan ruang lingkup terbuka seperti ini memang mengkhawatirkan, tetapi letak larangan nyatanya di mana?
Di Arch dan Debian, menjalankan
./talk-llamamemunculkan floating point exception. Saya sudah mengeceksdl2libdanffmpeg, dan juga melihat issue terkait (https://github.com/ggerganov/whisper.cpp/issues/1325), tetapi belum terpecahkan. Ada yang mengalami juga?https://github.com/ggerganov/whisper.cpp/issues/352#issuecom...
Saya tidak yakin apa yang berubah, tetapi pada dasarnya saya menghapus
ffmpegdanlibsdl2-dev, lalu menjalankanmakedari root repositori. Setelah itu saya memasanglibsdl2danffmpeg, lalu menjalankanmake talk-llamaDi i7-8550U 4-core dengan RAM 16GB, ini cukup lambat
Kurang lebih saya menjalankan ini dari root repositori:
$ 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\nApakah tidak ada solusi text-to-speech yang bisa menerima stream teks dan langsung membacakannya tanpa menunggu Llama selesai menghasilkan seluruh output?
Sepertinya ini hanya mungkin kalau model bisa mengisi buffer cukup cepat sehingga mesin sintesis suara tidak terhenti
Apakah latensi bisa dikurangi jika kita tidak menunggu seluruh respons LLM selesai, lalu melakukan streaming ke sintesis suara dalam kelompok sekitar 6 token begitu token-token itu dihasilkan?
Saat ini deteksi akhir ujaran hanya memakai ambang adaptif dasar, dan itu bisa dibuat lebih baik; LLM kecil juga bisa dipakai untuk menghasilkan respons umum yang cepat sementara LLM besar sedang menghitung. Sintesis suara juga bisa di-streaming per chunk atau per kalimat
Salah satu versi open source yang lebih baik untuk chatbot semacam ini menurut saya adalah https://github.com/yacineMTB/talk. Mungkin sekarang juga sudah ada lebih banyak proyek serupa
Apa antarmuka chat terbaik untuk Llama? Saya punya 3090 dan ingin menjalankan satu model untuk pekerjaan coding cepat di terminal
pacman -S ollamaollama serveollama run llama2:13b 'insert prompt'https://ollama.ai/
https://github.com/cogentapps/chat-with-gpt
Sepertinya dibuat untuk memakai ElevenLabs dan OpenAI API, tetapi mungkin juga cukup mudah dikonfigurasi untuk Whisper.cpp dan Llama lokal
Mereka sedang merekrut dan belum punya strategi monetisasi yang dipublikasikan, jadi saya menduga akan ada perubahan seperti sebagian fitur gratis dijadikan berbayar atau sengaja dibatasi. Meski begitu, untuk aplikasi tipis gratis bagi LLM yang sepenuhnya bergantung pada llama.cpp, akan sulit menciptakan ketergantungan vendor. Jika open source lebih penting daripada fitur, saya juga akan merekomendasikan ollama
Untuk pertanyaan teknis, menurut saya Wizard sedang paling populer saat ini
Saya sangat puas dengan ollama untuk menjalankan LLM open source lokal, tetapi apa padanannya untuk Whisper atau model sintesis suara open source terbaru? Saya belum tahu proyek yang membuat Whisper semudah itu untuk disetel secara lokal
Ada juga WhisperScript yang terlihat cukup bagus: https://github.com/openai/whisper/discussions/1028
Meski begitu, penyiapan WhisperX tidak terlalu sulit. Ini catatan langkah demi langkah yang saya rapikan beberapa bulan lalu: https://llm-tracker.info/books/logbook/page/transcription-te...
https://goodsnooze.gumroad.com/l/macwhisper
Untuk sintesis suara, coqui punya pengalaman pengguna dan model terbaik di berbagai bahasa, tetapi kualitasnya belum setara dengan penyedia sintesis suara komersial
Bisa jelaskan dengan mudah apa yang bisa dilakukan ini? Apakah ini bisa mempelajari dan mempertahankan konteks chat sambil membangun semacam memori jangka panjang?
Batas konteks LLM bergantung pada model dan pengaturan yang dipilih pengguna. Misalnya, itu bergantung pada model yang dipakai, seperti Llama 2 atau Wizard Vicuna, dan bagaimana jendela konteksnya diatur. LLM bukan benar-benar “menjawab” pengguna; yang dilakukannya adalah memprediksi kelanjutan paling masuk akal dari catatan percakapan antara pengguna dan assistant yang berguna, lalu hasilnya berhasil berpura-pura menjadi assistant yang berguna hingga benar-benar menjadi assistant yang berguna, jadi ini bisa membingungkan
Jika pipeline-nya diubah, perilaku seperti itu tampaknya mungkin dilakukan. Strukturnya menjadi
pengenalan suara → Wrapper[Llama] → sintesis suara, dan akan menarik jika Wrapper bisa membiarkan Llama melakukan bagiannya sambil menambahkan pemrosesan ekstra pada teks masukanWrapper itu bisa menganalisis percakapan dan mengekstrak poin-poin penting seperti “nama orang ini Bob, laki-laki, 35 tahun, suka anjing dan hal-hal yang rapi, ingin diingatkan untuk menelepon putrinya pada pukul 5 sore, adalah agen infiltrasi mafia Antarktika, dan lebih suka diajak bicara dengan aksen Polandia yang kental”, lalu bertindak berdasarkan itu
Misalnya, ia bisa membuat pengingat pukul 5 sore lewat HomeAssistant, mengatur mesin sintesis suara ke aksen Polandia, dan memodifikasi riwayat percakapan awal untuk sesi berikutnya
Dengan kata lain, ia bisa memasukkan nama orang itu ke percakapan internal dan memberi ringkasan minat serta kepribadiannya di pengantar awal percakapan berikutnya
Dengan begitu, interaktivitas muncul lewat tindakan yang dijalankan alat lain, dan kesinambungan juga bisa dibuat dengan memodifikasi riwayat percakapan berikutnya
Ini benar-benar memberi nuansa ELIZA yang kuat