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
Lepaskan: 2025-02-25 17:10:11
asal
256 orang telah melayarinya

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:
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())
Salin selepas log masuk
  1. Penukaran Ucapan-ke-Teks: menyalin audio yang dirakam ke dalam teks. Model Whisper Openai (khususnya, ggml-base.en.bin) digunakan untuk tujuan ini.
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.")
Salin selepas log masuk
  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.
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)
Salin selepas log masuk
  1. penukaran teks-ke-ucapan: Tukar respons teks yang dihasilkan kembali ke audio menggunakan Nemo Toolkit NVIDIA (FastPitch dan HiFi-GAN model).
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}")
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan