ARTICLE DETAIL

资讯详情

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

虚拟 IoT 设备语音采集零配置方案:用 Azure Speech SDK 在 Windows/macOS/Linux 上直接录音(IoT-For-Beginners 智能定时器项目)

虚拟 IoT 设备语音采集零配置方案:用 Azure Speech SDK 在 Windows/macOS/Linux 上直接录音(IoT-For-Beginners 智能定时器项目) 虚拟 IoT 设备语音采集零配置方案用 Azure Speech SDK 在 Windows/macOS/Linux 上直接录音IoT-For-Beginners 智能定时器项目【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇指南聚焦 IoT-For-Beginners 课程第 21 课《用 IoT 设备识别语音》中的虚拟 IoT 设备分支。与需要接线、装驱动、写底层代码的 Raspberry Pi 和 Wio Terminal 分支不同虚拟设备分支利用 Azure 认知服务语音 SDKPython 版内置的跨平台音频采集能力在 Windows、macOS 和 Linux 上无需任何额外配置即可从电脑麦克风录音。读完本文你将理解该零配置结论背后的原理掌握 SpeechConfig / SpeechRecognizer 的完整调用链并能直接运行仓库中提供的示例代码完成语音转文字。课程背景智能厨房定时器中的虚拟设备角色在 6-consumer/lessons/1-speech-recognition/README.md 中这一课的任务是构建一个支持语音控制的智能厨房定时器可同时设置多个定时器。课程为三种硬件形态分别提供了配置麦克风采集音频语音转文字三份步骤文档ArduinoWio Terminalwio-terminal-microphone.md → wio-terminal-audio.md → wio-terminal-speech-to-text.md单板计算机Raspberry Pipi-microphone.md → pi-audio.md → pi-speech-to-text.md单板计算机虚拟设备virtual-device-microphone.md → virtual-device-audio.md本文主体→ virtual-device-speech-to-text.md虚拟 IoT 设备即直接用你的个人电脑充当 IoT 设备代码跑在本地 Python 环境里麦克风与扬声器使用电脑自带硬件。本文对应的英文原文档 virtual-device-audio.md 给出了全文最核心的结论而这篇技术文章的任务就是把这一句话结论讲透并补齐可运行的代码与原理。核心结论Python 语音库自带跨平台录音能力虚拟设备分支的采集音频步骤正文只有一句话本课后续用于将语音转换为文本的 Python 库在 Windows、macOS 和 Linux 上内置了音频采集功能。你在这里不需要做任何事情。这句话的官方出处即 virtual-device-audio.md本仓库同时维护了 丹麦语译文 等数十种语言的翻译副本内容一致。它意味着虚拟设备分支不需要像 Raspberry Pi 分支那样安装 PortAudio/PyAudio、修改 ALSA 配置也不需要像 Wio Terminal 分支那样编写 DMA 底层驱动。只要满足以下前提采集音频这一步天然完成电脑具备可用的麦克风按 virtual-device-microphone.md 所述虚拟 IoT 硬件会使用连接到电脑的麦克风和扬声器。如果电脑没有内置麦克风/扬声器需要自行外接例如USB 麦克风USB 扬声器通过 HDMI 连接显示器内置的扬声器蓝牙耳机。外接设备按其厂商说明安装配置即可代码层面无感知。已安装语音 SDK即azure-cognitiveservices-speechPython 包。它负责把宿主操作系统Windows 的音频栈、macOS 的 CoreAudio、Linux 的 ALSA/PulseAudio的默认录音设备统一抽象出来SDK 内部完成音频采集与缓存无需应用代码参与。从采集音频到识别语音一行代码背后的完整链路虚拟设备分支真正的代码工作发生在语音转文字步骤而采集能力就内嵌在识别器里。参考 code-speech-to-text/virtual-iot-device/smart-timer/app.py 的完整实现import 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)对照 virtual-device-speech-to-text.md 的逐步说明这段代码的链路是配置SpeechConfig(subscriptionspeech_api_key, regionlocation, speech_recognition_languagelanguage)绑定语音资源的 API 密钥、区域与创建资源时的区域一致和识别语言。key和location来自az cognitiveservices account create --name smart-timer --kind SpeechServices --sku F0创建免费层资源后的密钥查询命令详见课程 README。语言参数language使用区域设置locale名称例如英语用en-GB粤语用zh-HK可参考课程文档中列出的语音转文字支持语言列表选择对应值。创建识别器SpeechRecognizer(speech_configrecognizer_config)在后台线程运行持续监听默认麦克风采集到的音频自动发送到语音服务。事件回调recognizer.recognized.connect(recognized)注册回调函数。SDK 会连续监听通过检测音频电平判断一段语音的起止——当音频电平回落例如一句话说完时自动把这一段的语音送去转换并将结果文本通过args.result.text交给回调输出。启动与保活recognizer.start_continuous_recognition()显式启动识别由于识别在后台线程运行主程序用while True: time.sleep(1)无限循环保持进程存活。运行效果在smart-timer虚拟环境中执行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。这印证了课程 README 中关于语音模型具备上下文理解能力的论述。与真实硬件分支的对比为什么虚拟设备可以什么都不做把三条分支的采集音频环节放在一起看虚拟设备分支的零配置才显得更有价值维度虚拟设备PCRaspberry PiWio Terminal采集方式Speech SDK 内置PyAudio依赖 PortAudio ALSA 驱动ADC DMAC 硬件直接内存访问需要安装仅azure-cognitiveservices-speechlibportaudio*系统包 pyaudio无固件级PlatformIO 编译音频落地SDK 内部缓冲、按语音分段上传内存缓冲 → WAV → 回放验证192KB RAM 不够写入 4MB 片内 Flash触发方式连续识别 电平分段按钮按下开始、松开结束Wio Terminal C 键触发固定 4 秒Raspberry Pi 分支见 pi-audio.md 与 code-record/pi/smart-timer/app.py需要先sudo apt install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev libasound2-plugins再手工指定microphone_card_number、speaker_card_number和采样率rate48KHz出错时降为 44100 或 16000并用wave模块把采集帧封装成 WAV 缓冲区。Wio Terminal 分支见 wio-terminal-audio.md则要处理更底层的细节用 SFUD 库操作 4MB Flashflash_writer.h按 Flash 擦除粒度对齐写入用 DMA 描述符把 ADC 采样以 16KHz 固定节奏写入双缓冲_adc_buf_0/_adc_buf_1mic.h并在中断处理里把 12 位 ADC 值转换为 16 位有符号 PCM 后拼上 44 字节 WAV 头。这正是课程 README 强调的微控制器内存极小Wio Terminal 仅 192KB无法像 PC 一样把整段音频放在内存里必须边采边落盘。虚拟设备分支之所以能省略所有这些工作本质上是把音频采集职责委托给了宿主操作系统PC 的内存、磁盘与音频栈足够强大SDK 直接读取系统默认录音设备即可这也是该文档你不需要做任何事情的底层原因。实践要点与后续步骤先建好语音资源按课程 README 的az cognitiveservices account create/az cognitiveservices account keys list命令创建smart-timer资源组与SpeechServicesSKU F0 免费层资源拿到 API Key 与区域名。确认麦克风可用在系统设置中验证默认录音设备外接设备参考 virtual-device-microphone.md。安装依赖并运行创建虚拟环境后执行pip install azure-cognitiveservices-speech如遇找不到发行版先pip install --upgrade pip填入app.py中的密钥、区域与语言即可体验零配置录音 语音转文字。继续本课后续完成语音识别后可在后续课程中为定时器加入口语反馈音频输出、多语言支持等能力相关代码骨架同样位于6-consumer/lessons/各子目录的code-*文件夹中可作为继续阅读与运行验证的入口。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表