ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IoT-For-Beginners 实战:在虚拟 IoT 设备上使用 Azure 语音服务完成语音转文本(Speech to Text)

IoT-For-Beginners 实战:在虚拟 IoT 设备上使用 Azure 语音服务完成语音转文本(Speech to Text) IoT-For-Beginners 实战在虚拟 IoT 设备上使用 Azure 语音服务完成语音转文本Speech to Text【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners导读本文基于 IoT-For-Beginners 项目第 21 课6-consumer/lessons/1-speech-recognition中虚拟 IoT 设备分支的教程讲解如何在 Windows、Linux、macOS 三平台上使用 Azure 认知服务语音Cognitive Services SpeechPython SDK把麦克风采集到的语音实时转换为文本。读完本文你将掌握azure-cognitiveservices-speech包的安装、SpeechConfig/SpeechRecognizer的配置方法、回调事件机制以及连续识别循环的完整写法并能在smart-timer示例项目基础上直接运行验证——这是后续课程构建智能厨房计时器smart kitchen timer的第一步。背景虚拟 IoT 设备与语音转文本在 IoT-For-Beginners 的消费者项目6-consumer/lessons/1-speech-recognition/README.md中你将学习把语音识别能力构建进 IoT 设备从麦克风作为模拟传感器采集声音到用 AI 把听到的内容转成文本最终做成一个支持多种语言、用语音设定计时器的智能厨房计时器。与 Wio TerminalArduino 平台通过 REST API 上传音频和 Raspberry Pi单板计算机同样走 REST API不同虚拟 IoT 设备的语音转文本实现最为简单——因为语音 SDK 在 Python 中内置了跨平台的音频采集能力见 virtual-device-audio.mdWindows、macOS、Linux 上无需额外安装采集库代码可以直接调用 SDK 监听麦克风无需自己写录音、切分、上传的流程。在动手前请先确认已完成两件事一是按 virtual-device-microphone.md 配置好电脑的麦克风笔记本内置麦克风即可也可使用 USB 麦克风、USB 音箱、通过 HDMI 连接的显示器音箱或蓝牙耳机二是按 README.md 的Task - configure a speech AI resource小节创建好语音服务资源并拿到 API Key。工作原理连续识别Continuous Recognition语音 SDK 的工作方式与一次性调用 REST API 不同。SDK 在后台线程上持续监听麦克风输入自动检测音频电平当检测到有人说话时开始采集当音频电平下降比如一句话说完的停顿时把这一段语音送去转换并在转换完成后通过**回调函数callback**通知你的代码。这样程序不需要自己判断什么时候开始说话、什么时候结束SDK 替你把活都干了——你只需注册回调、读取回调参数中的文本即可。创建项目与安装 SDK1. 创建smart-timer项目在电脑上新建一个名为smart-timer的文件夹内含单个 Python 文件app.py并为它创建 Python 虚拟环境venv。后续所有命令都必须在已激活虚拟环境的终端中执行。2. 安装语音 SDK在激活了虚拟环境的终端里执行pip install azure-cognitiveservices-speech如果遇到如下错误说明 Pip 版本过旧需要先升级 Pip 再重新安装ERROR: Could not find a version that satisfies the requirement azure-cognitiveservices-speech (from versions: none) ERROR: No matching distribution found for azure-cognitiveservices-speech解决办法pip install --upgrade pip然后再次执行pip install azure-cognitiveservices-speech。编写语音转文本代码以下所有代码片段最终组合成完整的app.py。仓库中已提供可直接对照的完整实现位于 code-speech-to-text/virtual-iot-device/smart-timer/app.py。1. 导入依赖在app.py顶部加入import requests import time from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer说明SpeechConfig承载订阅密钥、区域和识别语言等配置信息SpeechRecognizer真正的识别器对象负责后台监听与转换time用于让主线程在死循环中休眠保持程序常驻requests本文件实际并未直接使用但在项目后续扩展如网络请求中会用到保持导入与课程源码一致。2. 声明配置并创建 SpeechConfigspeech_api_key key location location language language recognizer_config SpeechConfig(subscriptionspeech_api_key, regionlocation, speech_recognition_languagelanguage)三个占位符的含义与替换规则参数占位符说明speech_api_keykey语音服务资源的 API Key可在 Azure 门户的资源Keys and Endpoint页查看locationlocation创建语音服务资源时使用的区域region必须与资源所在区域一致否则会认证失败languagelanguage说话语言的 locale 名称例如英语用en-GB粤语用zn-HK注意文档原文即如此写法实际对应简体中文为zh-CN请以官方语言支持列表为准language决定了识别器用哪种语言的声学/语言模型去解释你的语音务必与你的实际口音和说话语言匹配。3. 创建识别器recognizer SpeechRecognizer(speech_configrecognizer_config)SpeechRecognizer在创建时并未立刻开始监听它只是持有了配置真正开始工作要等显式调用启动方法。4. 注册回调处理识别结果识别器在后台线程持续工作每当检测并转换完一段语音就会触发recognized事件。通过connect方法把自定义回调挂上去def process_text(text): print(text) def recognized(args): process_text(args.result.text) recognizer.recognized.connect(recognized)要点args.result.text是识别结果的文本字段SDK 已经把语音转成了字符串process_text目前只是打印到控制台后续课程中会把它替换为解析计时命令并设定计时器的业务逻辑因此单独抽成函数事件回调在后台线程触发若后续要操作 UI 或共享状态需要注意线程安全。5. 启动连续识别并保持进程存活recognizer.start_continuous_recognition() while True: time.sleep(1)start_continuous_recognition()让识别器在后台开始持续监听由于识别逻辑跑在后台线程主线程若直接退出程序立即结束。这里用while Truetime.sleep(1)的死循环把主线程挂起让后台识别线程持续运行。实际产品中这部分通常会替换为事件驱动的主循环或与其他业务逻辑如计时器管理结合。运行与验证在激活虚拟环境的终端中运行python3 app.py对着麦克风说话识别出的文本会实时打印到控制台(.venv) ➜ smart-timer python3 app.py Hello world. Welcome to IoT for beginners.验证语义理解能力建议尝试不同类型的句子尤其是同音异义词homophones。例如说英文句子 I want to buy two bananas and an apple too观察输出——语音识别模型不只是做声音到单词的机械映射它会结合上下文语义正确区分并输出to、two、too这三个发音相同但拼写和含义不同的词。这与 README.md 中讲解的识别模型原理一致基于循环神经网络RNN的模型会把多段音频样本的预测结果组合起来结合上下文修正最终输出。源码对照与仓库实现细节仓库中本分支的完整成品代码见 code-speech-to-text/virtual-iot-device/smart-timer/app.py与你手写的代码结构完全一致。它可以作为排错参照如果运行报错先逐行比对 import、配置占位符是否替换、回调是否connect。与另外两种设备的实现对比帮助理解定位本课同一小节还包含另外两条实现路径理解它们的差异能帮助你更清楚虚拟设备方案的优势Raspberry Pi单板计算机见 pi-speech-to-text.md。它不使用 SDK 的麦克风监听而是先按下按钮采集音频为 WAV 缓冲再用requests向语音服务 REST API 发起POST上传音频并需要先调用令牌接口获取 access tokenget_access_token函数token 有效期 10 分钟。对应代码在 code-speech-to-text/pi/smart-timer/app.py。Wio TerminalArduino 平台见 wio-terminal-speech-to-text.md。由于内存仅 192KB它把录音写入外部 flash再通过自定义FlashStream继承 ArduinoStream以分块方式把音频流式上传给 REST API并对 401token 过期做递归重试。虚拟设备路径直接使用SpeechRecognizer省去了手动取 token、组装 WAV、分块上传的所有环节是最适合快速体验语音→文本全流程的入口这也印证了 SDK 在桌面平台上把底层音频采集与协议细节全部封装了起来。常见问题排查现象可能原因处理方式pip install报 No matching distributionPip 版本过旧pip install --upgrade pip后重试一直没有任何输出麦克风未配置或未授权检查系统麦克风权限与 virtual-device-microphone.md报认证/区域错误location与资源区域不一致或 key 填错核对 Azure 资源页的 key 与 region识别语言不准language与实际口音不匹配换用匹配的 locale如zh-CN、en-US下一步至此你的虚拟设备已经具备语音转文本能力可以在 README.md 的指导下继续本课剩余内容后续课程将在此基础上把process_text从简单的print升级为对设定 X 分钟计时器这类指令的解析与执行最终完成支持多语言的智能厨房计时器。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表