20. 使用 Ollama 进行本地语音对话

本示例将基于云的 GPT API 替换为本地运行的 Ollama LLM。 所有 AI 处理都在您自己的机器上完成 — 无需网络,无需管理 API 密钥。 这是一个完全离线的语音交互机器人。

运行代码

cd ~/picrawler/examples
sudo python3 20_voice_active_crawler_ollama.py

代码

备注

您可以**修改/重置/复制/运行/停止**以下代码。但在此之前,您需要进入源代码 路径,如 picrawler\examples。修改代码后,可以直接运行以查看效果。

from picrawler.llm import Ollama as LLM

from voice_active_crawler import VoiceActiveCrawler

# 如果 Ollama 在同一台树莓派上运行,使用 "localhost"
# 如果在局域网其他电脑上运行,替换为那台电脑的 IP
llm = LLM(
   ip="localhost",
   model="llama3.2:3b"   # 可以使用任何模型
)

NAME = "Buddy"
WITH_IMAGE = False
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
KEYBOARD_ENABLE = True
WAKE_ENABLE = True
WAKE_WORD = ["hey buddy"]
ANSWER_ON_WAKE = "Hi there"
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)

INSTRUCTIONS = """
You are a Raspberry Pi-based robotic spider developed by SunFounder, named Picrawler...
## Actions You Can Perform:
["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"]
"""

vad = VoiceActiveCrawler(
   llm, name=NAME, with_image=WITH_IMAGE,
   stt_language=STT_LANGUAGE, tts_model=TTS_MODEL,
   keyboard_enable=KEYBOARD_ENABLE, wake_enable=WAKE_ENABLE,
   wake_word=WAKE_WORD, answer_on_wake=ANSWER_ON_WAKE,
   welcome=WELCOME, instructions=INSTRUCTIONS,
   disable_think=True,
)

if __name__ == '__main__':
   vad.run()

工作原理

  1. 什么是 Ollama?

    Ollama 是一个在本地硬件上运行大语言模型的工具。 与调用云 API 的 GPT 课程不同,本示例在设备上运行一切 — 对话永远不会离开 树莓派(或本地网络)。

    # 安装 Ollama,然后拉取模型:
    ollama pull llama3.2:3b
    
  2. 本地 LLM 连接

    from picrawler.llm import Ollama as LLM
    
    llm = LLM(ip="localhost", model="llama3.2:3b")
    

    关键区别:

    • 无需 API 密钥 — 本地服务器不需要认证

    • IP 地址 — 同一台 Pi 上用 "localhost",其他电脑用 LAN IP

    • 模型 — 任何已拉取的 Ollama 模型都可以使用

  3. 禁用视觉

    WITH_IMAGE = False
    

    大多数 Ollama 模型不支持多模态(图像)输入。如果拉取了支持视觉的模型 (如 llava),可以将其设为 True

  4. 禁用 Think

    disable_think=True
    

    某些 Ollama 模型(特别是推理模型如 qwen2.5)输出 <think> 标签。 disable_think=True 会去除这些标签,只朗读最终答案。

  5. 同一个管道,离线运行

    对话管道与 18. 与 GPT 进行语音对话 相同,但**第 3 步在您自己的硬件上 运行**,无需云依赖、无速率限制、完全隐私。

  6. 硬件注意事项

    在树莓派上本地运行 LLM:

    • 小模型(3B 参数,如 llama3.2:3b)较慢但可运行

    • 大模型(7B+)对交互使用来说太慢

    • 建议在局域网内的独立电脑上运行 Ollama,用 ip 参数指向它