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