首页 > 科技周边 > 人工智能 > 在您的CPU笔记本电脑上建立LLM和神经网络的本地语音助手

在您的CPU笔记本电脑上建立LLM和神经网络的本地语音助手

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2025-02-25 17:10:11
原创
256 人浏览过

>解锁本地语音助手的力量:逐步指南

>

多模式大语言模型(LLM)的兴起彻底改变了我们与AI的互动方式,从而促进了基于语音的互动。虽然OpenAI的语音启用ChatGpt提供了方便的解决方案,但构建本地语音助手提供了增强的数据隐私,无限的API呼叫,以及可以针对特定需求进行微调模型的能力。 本指南详细介绍了基于标准CPU的机器上这种助手的构造。

为什么选择本地语音助手?

>

>三个关键优势推动了当地语音助手的吸引力:

  1. 数据隐私:避免将敏感信息传输到外部服务器。
  2. >
  3. 无限制的API调用:专有APIS施加的旁路限制。
  4. >可自定义的模型:>微调llms在特定域内进行最佳性能。
构建您的本地语音助手

这个项目包括四个核心组件:

    >
  1. 语音记录:从设备的麦克风中捕获音频输入。 库促进了此过程,将音频保存为WAV文件。 下面的代码段说明了以下内容:sounddevice>
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())
登录后复制
  1. >语音到文本转换:将录制的音频转录为文本。 Openai的耳语模型(特别是)用于此目的。 ggml-base.en.bin
基于文本的响应生成:
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.")
登录后复制
    使用轻型LLM(例如,Ollama的
  1. )来生成对转录输入的文本响应。 实用程序功能,,处理LLM相互作用。> qwen:0.5b run_ollama_command
>
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)
登录后复制
文本到语音转换:
    使用NVIDIA的NEMO TOOLKIT(FastPitch和Hifi-GAN模型)将生成的文本响应转换回音频。
  1. 系统集成和未来改进
一个简化的应用程序集成了这些组件,提供了一个用户友好的接口。 进一步的增强可能包括对话历史管理,多语言支持以及响应的来源归因。 考虑探索开放的WebUI以获取其他音频模型集成功能。 记住要始终批判性地评估AI生成的响应。
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}")
登录后复制

>该修订后的响应维护核心信息,同时显着提高了清晰度,结构和代码格式。 它也可以去除YouTube嵌入,因为它不直接可重复。

>

以上是在您的CPU笔记本电脑上建立LLM和神经网络的本地语音助手的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板