Rumah >Peranti teknologi >AI >Membina Pembantu Suara Tempatan dengan LLM dan Rangkaian Neural di komputer riba CPU anda
Buka kunci kuasa pembantu suara tempatan: Panduan langkah demi langkah
Kebangkitan model bahasa besar multimodal (LLMS) telah merevolusikan bagaimana kita berinteraksi dengan AI, membolehkan interaksi berasaskan suara. Walaupun CHATGPT yang dibolehkan suara OpenAI menawarkan penyelesaian yang mudah, membina pembantu suara tempatan menyediakan privasi data yang dipertingkatkan, panggilan API tanpa had, dan keupayaan untuk menyesuaikan model untuk keperluan khusus. Panduan ini memperincikan pembinaan pembantu sedemikian pada mesin berasaskan CPU standard.
mengapa memilih pembantu suara tempatan?
Tiga Kelebihan Utama Memacu Rayuan Pembantu Suara Tempatan:
Membina pembantu suara tempatan anda
Projek ini terdiri daripada empat komponen teras:
sounddevice
memudahkan proses ini, menyimpan audio sebagai fail WAV. Coretan kod di bawah menunjukkan ini: <code class="language-python">import sounddevice as sd import wave import numpy as np sampling_rate = 16000 # Matches Whisper.cpp model recorded_audio = sd.rec(int(duration * sampling_rate), samplerate=sampling_rate, channels=1, dtype=np.int16) sd.wait() audio_file = "<path>/recorded_audio.wav" with wave.open(audio_file, "w") as wf: wf.setnchannels(1) wf.setsampwidth(2) wf.setframerate(sampling_rate) wf.writeframes(recorded_audio.tobytes())</path></code>
ggml-base.en.bin
) digunakan untuk tujuan ini. <code class="language-python">import subprocess WHISPER_BINARY_PATH = "/<path>/whisper.cpp/main" MODEL_PATH = "/<path>/whisper.cpp/models/ggml-base.en.bin" try: result = subprocess.run([WHISPER_BINARY_PATH, "-m", MODEL_PATH, "-f", audio_file, "-l", "en", "-otxt"], capture_output=True, text=True) transcription = result.stdout.strip() except FileNotFoundError: print("Whisper.cpp binary not found. Check the path.")</path></path></code>
qwen:0.5b
) untuk menghasilkan respons teks kepada input yang ditranskripsikan. Fungsi utiliti, run_ollama_command
, mengendalikan interaksi LLM. <code class="language-python">import subprocess import re def run_ollama_command(model, prompt): try: result = subprocess.run(["ollama", "run", model], input=prompt, text=True, capture_output=True, check=True) return result.stdout except subprocess.CalledProcessError as e: print(f"Ollama error: {e.stderr}") return None matches = re.findall(r"] *(.*)", transcription) concatenated_text = " ".join(matches) prompt = f"""Please ignore [BLANK_AUDIO]. Given: "{concatenated_text}", answer in under 15 words.""" answer = run_ollama_command(model="qwen:0.5b", prompt=prompt)</code>
<code class="language-python">import nemo_tts import torchaudio from io import BytesIO try: fastpitch_model = nemo_tts.models.FastPitchModel.from_pretrained("tts_en_fastpitch") hifigan_model = nemo_tts.models.HifiGanModel.from_pretrained("tts_en_lj_hifigan_ft_mixerttsx") fastpitch_model.eval() parsed_text = fastpitch_model.parse(answer) spectrogram = fastpitch_model.generate_spectrogram(tokens=parsed_text) hifigan_model.eval() audio = hifigan_model.convert_spectrogram_to_audio(spec=spectrogram) audio_buffer = BytesIO() torchaudio.save(audio_buffer, audio.cpu(), sample_rate=22050, format="wav") audio_buffer.seek(0) except Exception as e: print(f"TTS error: {e}")</code>
integrasi sistem dan penambahbaikan masa depan
Aplikasi Streamlit mengintegrasikan komponen ini, menyediakan antara muka mesra pengguna. Peningkatan selanjutnya boleh termasuk pengurusan sejarah perbualan, sokongan berbilang bahasa, dan atribusi sumber untuk respons. Pertimbangkan untuk meneroka WebUI Terbuka untuk keupayaan integrasi model audio tambahan. Ingatlah untuk sentiasa menilai respons AI-Generated secara kritis.
Atas ialah kandungan terperinci Membina Pembantu Suara Tempatan dengan LLM dan Rangkaian Neural di komputer riba CPU anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!