GLaDOS 语音助手
基于《传送门》电子游戏系列中的 GLaDOS 角色的 DIY 语音助手。
推荐:🛠 Hackday - 技术博客 🛠 Tom's Hardware - 技术新闻 🎮 PCGamer - 在线杂志 🇫🇮 Ilta-Sanomat - 芬兰第二大报纸 🇫🇮 Muropaketti - 芬兰计算机网站 📺 YouTube - GLaDOS 语音助手播放列表 |
先阅读项目文章!
📄 GLaDOS 语音助手 - henrirantanen.fi
描述
- 主要使用 Python 编写
- 项目正在进行中
❗ 新版本的语音助手由于某些 AI 脚本需要的 CPU 指令集缺失,无法在 Raspberry Pi 上运行。如果你想在 Raspberry Pi 上体验旧版本,请查看 raspberry 分支。
- YouTube 📺 GLaDOS 语音助手 | 简介
- YouTube 📺 GLaDOS 语音助手 | 软件 - Python 教程
- Twitter 🛠 GLaDOS 语音助手项目构建
主要功能
- 使用 PocketSphinx 进行本地触发词检测
- 使用 R2D2FISH 的 glados-tts 模型 的本地 GLaDOS 文本转语音引擎
- 目前使用 Google 的 API 进行语音转文本处理
- 本地 TTS 缓存常见音频样本,以便将来能即时回应
- 使用伺服器控制仿生眼睛
- 圆形 LCD 作为眼睛显示纹理
与 Home Assistant 的本地 API 紧密集成:
- 向 Home Assistant 发送指令
- 读取并播报传感器数据
- 通知 API,因此 Home Assistant 可以通过 GLaDOS 播报通知
它可以做什么:
- 显示时间
- 控制灯光和设备
- 提供天气预报
- 添加购物清单
- 读取传感器信息
- 随机回答魔法 8 号球问题
- 讲笑话
- 批判你并对你刻薄
- 进行高级羞辱
- 记录并本地收集训练数据
注意:代码仅供参考。
语音助手流程概览
Ubuntu 系统要求
安装工具
sudo apt-get update
sudo apt-get upgrade
sudo apt install python3-pip
安装 PyAudio
PyAudio 用于播放音频文件。
sudo apt-get install portaudio19-dev
安装 PocketSphinx
目前用于触发词检测。
sudo apt-get install -y build-essential swig libpulse-dev libasound2-dev
安装 SpeechRecognition
目前用于将音频转换为文本。
sudo apt-get install flac
安装其他库
从 requirements.txt 文件中安装 Python 模块
cd ~/glados-voice-assistant
sudo pip3 install -r requirements.txt
安装 PyTorch
详见此处:https://pytorch.org/get-started/locally/#start-locally
安装 GLaDOS 语音助手
1. 进入主目录
cd ~
2. 从 GitHub 下载源代码
这将下载 GLaDOS 语音助手和 TTS 子模块。
git clone --recurse-submodules https://github.com/nerdaxic/glados-voice-assistant/
下载完成后你可以尝试 TTS,这是一个独立运行的模块。
cd ~/glados-voice-assistant/glados_tts/
python3 glados.py
3. 编辑设置文件
找到声卡 ID:
python3 -m sounddevice
生成并编辑 settings.env 文件:
cp ~/glados-voice-assistant/settings.env.sample ~/glados-voice-assistant/settings.env && nano ~/glados-voice-assistant/settings.env
4. 运行:
启动语音助手:
python3 ~/glados-voice-assistant/glados.py
你可以将 glados.py 添加到 crontab 文件中或手动运行。
crontab -e
@reboot python3 /home/username/glados-voice-assistant/glados.py
集成到 Home Assistant
要使 Home Assistant 集成工作,你需要在 Home Assistant 配置文件中启用 API 并生成一个长期访问令牌。 在 settings.env 文件中添加访问令牌和 Home Assistant 服务器的 IP 地址。
configuration.yaml
# 启用 REST API
api:
# 将 GLaDOS 添加为通知提供者。请将 IP 地址替换为 GLaDOS 的正确 IP。
notify:
- name: glados
platform: rest
resource: http://192.168.1.XXX:5000/notify
硬件
以下是 nerdaxic 正在开发的参考硬件,型号不必完全一致。 非完整材料清单。
项目 | 描述 |
---|---|
主板 | 配备 16GB 内存的 i7 笔记本电脑 |
操作系统 | ubuntu-20.04.3-desktop-amd64 |
微控制器 | Teensy 4,用于控制眼睛 LCD 和 NeoPixels |
眼部灯光 | Adafruit NeoPixel Diffused 5mm Through-Hole 用于“录制”灯 |
眼部灯光 | Adafruit 16 x 5050 NeoPixel Ring |
眼部 LCD | 1.28 英寸圆形 TFT LCD 显示模块,GC9A01 驱动 SPI 接口 240 x 240 |
音频
音频放大器由 Raspberry GPIO 5V 线路供电,ReSpeaker 板通过 USB 供电,以避免地环和噪声问题。
项目 | 描述 |
---|---|
音频放大器 | Adafruit 立体声 3.7W D 类音频放大器 |
扬声器 | Visaton FRS 7 |
麦克风和音频接口 | ReSpeaker Mic Array V2.0 |
机械部分
机械部分由独立电源供电,为伺服器提供更多电