15. STT(语音转文本)
本示例演示如何在 PiCrawler 上使用 STT(语音转文本)模块。 机器人通过板载麦克风听取您的声音,并实时将其转换为文本。
运行代码
cd ~/picrawler/examples
sudo python3 15_stt.py
程序运行后,您将看到语言设置和提示符。机器人开始监听 — 对着麦克风说话, 识别的文本将打印到终端。
如果未检测到语音,将显示 (no speech detected)。按 Ctrl+C 退出。
准备工作
请确保已完成:
安装所有模块(重要) — 安装
robot-hat、vilib、picrawler模块,然后运行脚本i2samp.sh。
代码
备注
您可以**修改/重置/复制/运行/停止**以下代码。但在此之前,您需要进入源代码
路径,如 picrawler\examples。修改代码后,可以直接运行以查看效果。
#!/usr/bin/env python3
from robot_hat.stt import STT
# 使用 sunfounder_voice_assistant STT 模块的语音识别演示
# 按 Ctrl+C 退出
# 配置语言:"en-us"、"zh-cn" 等
LANGUAGE = "zh-cn"
def main():
print("=== PiCrawler 语音转文本演示 ===")
print(f"语言:{LANGUAGE}")
print("按 Ctrl+C 退出")
print()
stt = STT(language=LANGUAGE)
try:
while True:
print("正在监听...(现在说话)")
text = stt.listen()
if text:
print(f">>> {text}")
else:
print("(未检测到语音)")
except KeyboardInterrupt:
print("\n正在退出...")
if __name__ == "__main__":
main()
工作原理
导入 STT 模块
from robot_hat.stt import STT
STT类是robot_hat包的一部分。它处理所有底层的音频捕获和语音 识别处理。设置语言
LANGUAGE = "zh-cn"
LANGUAGE变量配置识别语言。您可以根据需要将其更改为其他支持的代码, 如"en-us"(英语)。创建 STT 实例
stt = STT(language=LANGUAGE)
这将创建一个针对所选语言配置的 STT 对象。该对象初始化麦克风和语音识别 引擎。
监听循环
while True: print("正在监听...(现在说话)") text = stt.listen() if text: print(f">>> {text}") else: print("(未检测到语音)")
程序运行一个无限循环,每次迭代:
提示用户说话。
调用
stt.listen(),该函数会阻塞,直到检测并处理语音。将识别的文本作为字符串返回,如果未理解任何内容则返回
None。将结果打印到终端。
优雅退出
except KeyboardInterrupt: print("\n正在退出...")
按 Ctrl+C 会触发
KeyboardInterrupt,捕获后打印退出消息并干净地 终止程序。