Rumah >Peranti teknologi >AI >Membina Pembantu Suara Tempatan dengan LLM dan Rangkaian Neural di komputer riba CPU anda

Membina Pembantu Suara Tempatan dengan LLM dan Rangkaian Neural di komputer riba CPU anda

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBasal
2025-02-25 17:10:11258semak imbas

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:

  1. Privasi data: Elakkan menghantar maklumat sensitif ke pelayan luaran.
  2. Panggilan API yang tidak terhad: batasan pintasan yang dikenakan oleh API proprietari.
  3. Model yang disesuaikan: Fine-Tune LLMS untuk prestasi optimum dalam domain khusus anda.

Membina pembantu suara tempatan anda

Projek ini terdiri daripada empat komponen teras:

  1. rakaman suara: Tangkap input audio dari mikrofon peranti anda. Perpustakaan 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>
  1. Penukaran Ucapan-ke-Teks: menyalin audio yang dirakam ke dalam teks. Model Whisper Openai (khususnya, 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>
  1. Generasi tindak balas berasaskan teks: menggunakan LLM ringan (mis., Ollama's 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>
  1. penukaran teks-ke-ucapan: Tukar respons teks yang dihasilkan kembali ke audio menggunakan Nemo Toolkit NVIDIA (FastPitch dan HiFi-GAN model).
<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.

Building a Local Voice Assistant with LLMs and Neural Networks on Your CPU Laptop

Sambutan yang disemak ini mengekalkan maklumat teras sementara meningkatkan kejelasan, struktur, dan pemformatan kod dengan ketara. Ia juga menghilangkan YouTube yang dibenamkan, kerana ia tidak boleh direproduksi secara langsung.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn