ARTICLE DETAIL

资讯详情

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

IoT-For-Beginners 语音识别课程:为虚拟 IoT 设备配置麦克风与扬声器,打通语音转文本全链路

IoT-For-Beginners 语音识别课程:为虚拟 IoT 设备配置麦克风与扬声器,打通语音转文本全链路 IoT-For-Beginners 语音识别课程为虚拟 IoT 设备配置麦克风与扬声器打通语音转文本全链路【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南聚焦于开源课程《IoT-For-Beginners》用 IoT 设备识别语音一课中的虚拟设备Virtual IoT Hardware方案如何为运行在电脑上的虚拟设备配置麦克风与扬声器并在此基础上完成智能厨房计时器smart-timer的语音转文本Speech to Text端到端实战。读完本文你将掌握虚拟 IoT 设备的音频硬件选型与连接要点、Azure Speech 资源的创建与密钥获取、以及基于azure-cognitiveservices-speechPython SDK 编写可运行的语音识别程序的全过程。虚拟 IoT 设备的音频环境要求在 6-consumer/lessons/1-speech-recognition/README.md 的第 21 课中你将构建一个能够用语音设置计时器的智能厨房计时器。与 ArduinoWio Terminal和树莓派Raspberry Pi两种真实硬件方案不同虚拟 IoT 设备方案完全复用你电脑上已有的音频输入输出设备——虚拟硬件本身不携带麦克风或扬声器而是直接使用连接在计算机上的麦克风与扬声器。如果电脑没有内置麦克风和扬声器则需要自行外接原文档列出的可选硬件包括USB 麦克风即插即用是桌面端最直接的输入方案USB 扬声器提供音频输出能力用于后续课程中的语音反馈显示器内置扬声器通过 HDMI 连接借助 HDMI 线缆同时传输视频与音频信号蓝牙耳机同时覆盖输入麦克风与输出耳机需求。硬件接入后应按照硬件制造商提供的说明书完成安装与配置确保操作系统能够识别并默认使用该设备。需要特别注意的是虚拟设备方案中麦克风与扬声器的配置粒度完全取决于你的操作系统课程不提供额外的设备管理代码——这一步纯粹属于运行环境的硬件准备。该课程在同一课内提供了三套硬件方案的配置指南可对照阅读Wio TerminalArduinowio-terminal-microphone.md树莓派Raspberry Pipi-microphone.md虚拟设备Virtual devicevirtual-device-microphone.md为什么需要扬声器语音反馈与麦克风测试配置扬声器看似与本课的语音识别主题无关但原文档明确说明了两个用途测试麦克风扬声器是验证麦克风采集链路是否畅通的最直接手段——对着麦克风说话若能听到或观察到录音软件中的波形即说明输入通路正常为后续课程铺路本项目后续内容会利用扬声器输出语音反馈Spoken Feedback提前配置好扬声器可以避免后续重复折腾硬件环境。从课程的整体编排看README.md 的 Capture audio from your IoT device 一节音频设备的配置是本课采集音频任务的前置步骤而采集音频又是语音转文本的前提三者构成一条依赖链配置硬件 → 采集音频 → 转写文本。虚拟设备如何采集音频Python SDK 的内置能力对于虚拟设备方案音频采集环节几乎无需任何额外工作。virtual-device-audio.md 中明确写道本课后续用于语音转文本的 Python 库在 Windows、macOS 和 Linux 上均已内置音频采集能力你不需要在这里做任何事。这意味着在虚拟设备方案中从麦克风硬件到音频数据的桥梁由azure-cognitiveservices-speechSDK 自动完成SDK 会直接调用操作系统的声音子系统从默认输入设备读取音频流。因此前面配置麦克风的全部意义就在于确保操作系统层面默认输入设备正确SDK 才能采到有效的语音信号。音频基础麦克风与数字采样背景深化为了理解配置麦克风这一动作的技术含义有必要简要回顾麦克风的工作原理与本课用到的音频数字化概念详见 README.md 的 Microphones 与 Digital audio 小节麦克风是模拟传感器它将声波振动转换为微弱的电信号变化经放大后输出电信号。常见类型有动圈式Dynamic、铝带式Ribbon、电容式Condenser以及微型化的 MEMS 麦克风。现代电脑、手机、耳机中普遍使用 MEMS 麦克风——它是在硅芯片上蚀刻出对压力敏感的振膜体积可小于 1 毫米数字音频采用 PCM 采样即脉冲编码调制以固定频率读取信号电压并映射到最近的离散整数值。语音转文本常用的规格是16-bit / 16KHz即每秒采样 16000 次、每次用 2 字节表示数据量估算16-bit 意味着每样本 2 字节16000 样本/秒 × 2 字节 每秒 32000 字节。对微控制器而言这是很大的开销例如 Wio Terminal 仅有 192KB 内存但对运行虚拟设备方案的电脑来说完全无压力——这也是虚拟设备方案可以直接让 SDK 边录边传的原因之一语音识别模型本课使用的语音识别基于循环神经网络RNN能够结合上下文把发音相同但拼写不同的词如 to、two、too写对并在处理更多语音时修正已识别的词。语音转文本实战从零配置到可运行程序硬件就绪后即可进入本课的核心实操——将麦克风采集的语音转换为文本。以下步骤与仓库 code-speech-to-text/virtual-iot-device/smart-timer/app.py 中的完整代码完全对应详细说明见 virtual-device-speech-to-text.md。第 1 步创建 Python 应用与虚拟环境在电脑上新建名为smart-timer的文件夹内含单个app.py文件并创建 Python 虚拟环境。后续所有安装与运行命令都需在激活了虚拟环境的终端中执行。第 2 步安装语音服务 SDKpip 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-speechpip install --upgrade pip第 3 步创建 Azure Speech 资源并获取密钥语音转文本需要调用 Azure 认知服务的 Speech 服务。使用 Azure CLI 创建资源组与免费层F0语音资源az cognitiveservices account create --name smart-timer \ --resource-group smart-timer \ --kind SpeechServices \ --sku F0 \ --yes \ --location location其中location替换为创建资源组时使用的区域。随后列出 API 密钥az cognitiveservices account keys list --name smart-timer \ --resource-group smart-timer \ --output table复制其中一个密钥备用。--kind SpeechServices指定资源类型为语音服务--sku F0为免费层适合学习与原型验证。第 4 步编写app.py仓库中的完整实现如下app.pyimport time from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer speech_api_key key location location language language recognizer_config SpeechConfig(subscriptionspeech_api_key, regionlocation, speech_recognition_languagelanguage) recognizer SpeechRecognizer(speech_configrecognizer_config) def process_text(text): print(text) def recognized(args): process_text(args.result.text) recognizer.recognized.connect(recognized) recognizer.start_continuous_recognition() while True: time.sleep(1)代码要点逐一说明三个配置占位符key替换为第 3 步获取的 API 密钥location替换为创建资源时使用的区域language替换为说话语言的 locale 名称例如en-GB英语或zh-HK粤语。三者共同构造SpeechConfig对象SpeechRecognizer创建识别器实例它在一个后台线程中持续监听麦克风。SDK 会自动检测音频电平当一段语音结束电平回落时将这段语音发送到 Speech 服务转成文本回调机制recognizer.recognized.connect(recognized)注册回调函数每次识别出文本时触发recognized(args)通过args.result.text取出文本并交给process_text打印到控制台持续识别start_continuous_recognition()显式启动识别后台运行主线程用while True: time.sleep(1)保持程序存活。这种回调 主循环的写法在 IoT 桌面端程序中是典型模式。第 5 步运行并验证python3 app.py对着麦克风说话控制台将实时输出转写结果(.venv) ➜ smart-timer python3 app.py Hello world. Welcome to IoT for beginners.建议做一次同音词测试以验证模型上下文理解能力例如说 I want to buy two bananas and an apple too观察输出是否正确区分 to / two / too——这正是 RNN 结合上下文修正识别结果的实际体现。延伸阅读与后续方向本课其余硬件平台的完整链路见 README.md包括 Wio Terminal 与树莓派的音频采集与语音转文本指南完成语音转文本后可继续学习后续课程的语音反馈Spoken Feedback与多语言支持扬声器在此阶段将派上用场关于隐私设计本课为避免训练唤醒词模型的复杂度采用按钮触发识别而非始终监听相关设计考量详见 README 的 Privacy 小节。至此从给虚拟设备插上麦克风到对着电脑说话、屏幕输出文字一条完整的虚拟 IoT 语音识别链路已打通。你可以把配置好的smart-timer项目作为基础继续向智能厨房计时器的完整形态演进。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表