Anda mungkin pernah mendengar tentang neurosama terkenal, atau Mu Jimeng dari Cina. Apakah Anda juga ingin memiliki citra virtual AI Anda sendiri untuk menemani Anda untuk menyiarkan, mengobrol, dan bermain game? Robot Langsung Zerolan Open Source bekerja untuk mewujudkan impian Anda! Dan ini hanya membutuhkan kartu grafis konsumen!
Zerolan Live Robot adalah robot siaran langsung multi-fungsional (AI VTUBER), yang secara otomatis dapat membaca rentetan di ruang siaran langsung Bilibili, mengamati jendela yang ditentukan dari layar komputer, memahami konten layarnya, memanipulasi karakter game di Minecraft, dan membuat respons obrolan suara emosional.
Proyek terkaitnya Konekominecraftbot, Zerolan-Core, Zerolan-Data, Zerolan-UI.
Catatan
Proyek ini sedang dalam pengembangan berkelanjutan, versi saat ini adalah 2.0 . Anda dapat mengikuti akun bilibili pengembang Akagawa Tsurumi_Channel. Ini melatih AI Cat Girl berdasarkan proyek ini, dan itu akan menyiarkan kemajuan terbaru dari waktu ke waktu.
Berikut ini mencantumkan apa yang didukung proyek ini:
| Item dukungan | Konten yang didukung |
|---|---|
| Platform siaran langsung | Bilibili | Berkedut |
| Model Bahasa Besar | Thudm/glm-4 | Thudm/chatglm3 | Qwen/qwen-7b-chat | 01ai/yi-6b-chat | augmxnt/shisa-7b-v1 |
| Model pengenalan ucapan otomatis | IIC/pidato_paraformer_asr |
| Model sintesis ucapan | RVC-BOSS/GPT-SOVITS |
| Model subtitle gambar | Salesforce/blip-image-captioning-large |
| Model pengenalan karakter optik | Paddlepaddle/Paddleocr |
| Model subtitle video | IIC/multi-modal_hitea_video-captioning_base_en |
| Alat yang dapat dipanggil eksternal | Browser Firefox, Baidu Encyclopedia, Mengniang Encyclopedia |
| Plug-in game | Minecraft |
Peringatan
Versi Zerolan Live Robot 2.0 tidak kompatibel dengan versi yang lebih lama 1.0, jadi Anda mungkin perlu mengkonfigurasi ulang lingkungan dan menginstal dependensi.
Kerangka Zerolan terdiri dari robot hidup Zerolan, inti zerolan, data zerolan, dan Zerolan UI. Tabel berikut secara singkat menjelaskan penggunaan setiap proyek:
| Nama proyek | menggunakan |
|---|---|
| Zerolan Live Robot | Kerangka kontrol robot siaran langsung membuat respons tindakan melalui pengumpulan data lingkungan dan analisis komprehensif. |
| Inti Zerolan | Modul inti yang menyediakan layanan inferensi AI untuk robot siaran langsung, seperti API Web berbasis layanan model bahasa besar. |
| Data Zerolan | Menentukan format data untuk pertukaran antara layanan menggunakan permintaan jaringan. |
| Zerolan UI | Antarmuka GUI berdasarkan PYQT6 termasuk jendela pop-up teratas dan suara prompt, dll. |
Penting
Langkah ini adalah suatu keharusan !
Harap pindah ke sini untuk menyelesaikan penyebaran inti Zerolan, yang sangat bergantung pada layanan inti ini.
Jalankan perintah, yang menciptakan lingkungan virtual dan mengaktifkannya, dan kemudian secara otomatis menginstal paket ketergantungan yang diperlukan oleh proyek ini:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt Jika Anda berada di cabang pengembangan dev , Anda mungkin perlu menginstalnya secara manual:
pip install git+https://github.com/AkagawaTsurunaki/zerolan-ui.git@dev
pip install git+https://github.com/AkagawaTsurunaki/zerolan-data.git@dev Temukan file konfigurasi resources/config.template.yaml , ubah ke config.yaml , dan kemudian memodifikasinya ke konfigurasi yang Anda butuhkan sesuai dengan komentar di file konfigurasi.
Dalam item konfigurasi pipeline , Anda perlu mencatat bahwa server_url harus berisi protokol, IP dan nomor port, seperti http://127.0.0.1:11001 , https://myserver.com:11451 , dll. Ini adalah alamat jaringan di mana Anda menggunakan inti zerolan. Setiap jenis model mungkin memiliki port yang berbeda.
Tip
Bisakah server hanya memiliki satu port? Kemudian cobalah untuk meneruskan permintaan Anda menggunakan Nginx.
Dalam item konfigurasi service , Anda perlu mencatat bahwa host hanya boleh menyertakan alamat IP, dan port hanya boleh menyertakan nomor port.
Bidang game.platform mendukung minecraft , dan live_stream Field mendukung bilibili , twitch , dan youtube .
Tip
Dapatkan dokumentasi yang dapat digunakan oleh kunci API platform siaran langsung:
Bilibili: Dapatkan informasi yang diperlukan untuk kelas kredensial
Twitch: Pengembang Twitch - Otentikasi
YouTube: Memperoleh kredensial otorisasi
Nilai character.chat.filter.strategy dapat default .
character.chat.filter.bad_words dapat mengisi serangkaian kata filter.
character.chat.injected_history Array harus dari angka genap, yaitu, itu harus menjadi akhir dari pesan yang ditanggapi AI.
character.chat.max_history menentukan berapa banyak pesan yang paling banyak disimpan, yaitu, ukuran jendela pesan.
character.speech.prompts_dir menunjukkan di mana file audio TTS Anda disimpan, dan nama file Anda harus dalam format [语言][情感标签]文本内容.wav . Misalnya [zh][开心]哇!今天真是一个好天气.wav , di mana "bahasa" hanya mendukung zh , en , dan ja ; "Tag emosional" adalah sewenang -wenang, selama model bahasa besar dapat dibedakan; "Konten Teks" adalah konten teks yang diwakili oleh vokal dalam audio ini.
Peringatan
Mungkin ada kebocoran memori di browser Microsoft Edge, jadi proyek ini tidak didukung.
Nilai opsional dari external_tool.browser.driver adalah firefox .
external_tool.browser.profile_dir adalah untuk memastikan bahwa di bawah kendali selenium, login akun Anda dan informasi lainnya tidak akan hilang. Meninggalkan program kosong akan secara otomatis mendeteksi lokasi (tetapi itu tidak berarti bahwa itu pasti akan ditemukan).
Tip
Disarankan untuk menggunakan alat pengujian API seperti tukang pos sebelum mulai menguji apakah koneksi antara komputer yang menjalankan proyek ini dan inti zerolan adalah normal. Zerolan Live Robot memberikan beberapa saran ketika kesalahan koneksi pipa, yang masih mengharuskan Anda untuk memecahkan masalah secara manual.
Gunakan perintah berikut untuk menjalankan program utama robot Live Zerolan:
python main.pyCatatan
Langkah ini opsional .
Proyek ini dan KonekominecraftBot mengimplementasikan serangkaian antarmuka yang dapat mengontrol robot dalam game Minecraft dari proyek ini. Jika Anda membutuhkannya, silakan pindah ke sini untuk melihat detail.
Versi yang lebih lama dari Zerolan Live Robot 1.0 menggunakan polling sederhana oleh kedua untuk membaca informasi lingkungan dari daftar cache di setiap modul layanan. Dalam versi yang lebih lama dari Zerolan Live Robot 2.0, itu diubah menjadi pola desain yang digerakkan oleh acara .
Dalam proyek ini, robot berjalan selama pengiriman dan pemrosesan serangkaian acara. Dengan kata lain, tanpa acara, robot tidak akan merespons.
Setiap Event berisi nama acara, yang pada dasarnya adalah string. Semua nama acara yang digunakan dalam proyek ini didefinisikan secara common.enumerator.EventEnum , dan Anda juga dapat memperluas dan menambahkan nama acara Anda sendiri. Mari kita ambil peristiwa pemrosesan suara input pengguna sebagai contoh, acara ini disebut EventEnum.SERVICE_VAD_SPEECH_CHUNK .
emitter adalah objek global yang digunakan untuk menangani acara pengiriman dan pendengar. emitter selalu memiliki utas utama. Namun, beberapa utas akan berjalan pada waktu yang sama selama seluruh sistem berjalan, karena setiap utas mungkin memiliki instance sendiri dari EventeMitter.
Gunakan dekorator @emitter.on(EventEnum.某个事件) untuk mendaftarkan pendengar dengan cepat. Pendengar dapat berupa fungsi sinkron atau fungsi asinkron. Ketika kita perlu mengirim suatu acara, kita dapat menggunakan metode asinkron emitter.emit(EventEnum.某个事件, *args, **kwargs)
Misalnya, ketika sistem mendeteksi suara manusia, acara SERVICE_VAD_SPEECH_CHUNK akan dikirim, dan semua pendengar yang mendaftarkan acara ini akan dipanggil untuk melakukan beberapa pemrosesan:
@ emitter . on ( EventEnum . SERVICE_VAD_SPEECH_CHUNK )
async def on_service_vad_speech_chunk ( speech : bytes , channels : int , sample_rate : int ):
response = ... # 假设这里获得了语音识别的结果
await emitter . emit ( EventEnum . PIPELINE_ASR , response ) # 发送自动语音识别事件Pendengar di sini adalah on_service_vad_speech_chunk , yang pada dasarnya adalah fungsi yang akan dipanggil ketika SERVICE_VAD_SPEECH_CHUNK terjadi dan menerima beberapa parameter. Parameter di sini sepenuhnya ditentukan oleh pengirim acara.
Pipa adalah implementasi penting komunikasi dengan inti Zerolan. Penggunaan pipa sangat sederhana. Anda hanya perlu meneruskan objek konfigurasi untuk mendapatkan objek pipa yang tersedia. Kemudian panggil metode predict atau stream_predict di objek pipa untuk menggunakan model AI dalam inti zerolan.
Mengambil model bahasa besar sebagai contoh, tentukan alamat server target (alamat port terbuka inti zerolan Anda), lulus dalam objek LLMPipelineConfig ke LLMPipeline untuk membuat pipa.
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )Ini harus mendapatkan balasan dari model.
Jika Anda ingin mengetahui lebih banyak detail implementasi, Anda dapat memeriksa definisi data dalam data Zerolan, yang mungkin juga perlu dipahami dalam kombinasi dengan implementasi pipa dan konten dalam file app.py dalam inti zerolan. Sederhananya, mereka semua berbasis HTTP.
| Modul | memengaruhi | Konten yang didukung |
|---|---|---|
| browser | Kontrol browser berbasis selenium | Browser Firefox terbuka, cari dan tutup browser |
| perangkat | Mikrofon, tangkapan layar, kontrol speaker | Diuji di Windows saja |
| menyaring | Dialog Blocker | Filter pencocokan sederhana |
| permainan | Plugin Kontrol Game | Lihat Konekominecraftbot untuk detailnya |
| live_stream | Pembacaan rentetan platform siaran langsung | Bilibili, Twitch, YouTube |
| Vad | Deteksi Audio Suara Manusia | Mekanisme deteksi audio berdasarkan ambang energi |
Setelah startup, log menunjukkan "dalam konteksnya, alamat yang diminta tidak valid."
Solusi: Periksa apakah konfigurasi host benar di file konfigurasi. Jika Anda hanya ingin akses asli, tentukan '127.0.0.1' .
Proyek ini menggunakan lisensi MIT, jangan gunakan perangkat lunak ini untuk tujuan ilegal.
Jangan ragu untuk menikmati souce terbuka!
Lisensi MIT
Hak Cipta (C) 2024 Akagawatsurunaki
Email : [email protected]
GitHub : Akagawatsurunaki
Bilibili : Akagawa Tsurumi_Channel