描述photoshop在网站建设中的作用与特点.成都平台网站建设公司
2026/2/10 15:41:30 网站建设 项目流程
描述photoshop在网站建设中的作用与特点.,成都平台网站建设公司,中国建筑工程网官网登录,网站建设华企云商VOSK 是一个开源的语音识别#xff08;ASR#xff0c;Automatic Speech Recognition#xff09;工具包#xff0c;主要用于将语音转换成文本。它支持多种语言#xff0c;可以在离线环境下运行#xff0c;适合嵌入式设备、移动端应用#xff0c;或者需要低延迟、高隐私的…VOSK 是一个开源的语音识别ASRAutomatic Speech Recognition工具包主要用于将语音转换成文本。它支持多种语言可以在离线环境下运行适合嵌入式设备、移动端应用或者需要低延迟、高隐私的场景。VOSK 的核心优势包括轻量级、跨平台支持 Windows、Linux、Android、iOS 等以及提供预训练模型方便快速集成。它基于 Kaldi 语音识别工具链但使用起来更加简洁适合开发者快速搭建 ASR 系统。VOSK 主要特点如下表特性说明离线运行无需联网所有模型本地运行保障用户隐私。多语言支持支持中文普通话、英语、俄语、法语、德语、西班牙语等数十种语言。轻量高效模型体积小如中文模型约50MB内存占用低适用于树莓派、手机等资源受限设备。实时流式识别支持连续语音输入可逐字返回部分识别结果partial results适合实时转录或语音助手。跨平台提供 Python、Java、C#、Node.js、Go、Rust 等语言绑定兼容 Linux、Windows、macOS、Android 和 iOS。开源免费采用 Apache 2.0 许可证可自由用于商业项目。VOSK的官方模型下载页vosk models一、安装环境vosk 和 sounddevice 是两个常用于语音识别ASR和音频处理的 Python 库。vosk 是 VOSK 语音识别工具包的 Python 接口用于实现离线语音识别ASR。适用场景本地语音转文字、实时语音助手、语音命令控制等。sounddevice 是一个用于实时音频录制和播放的 Python 库可以方便地获取麦克风输入或输出音频。提供类似 NumPy 的接口便于处理音频数据。支持低延迟实时音频流。适合与 vosk 配合使用将麦克风采集的音频流送入语音识别模型。适用场景实时语音采集、音频流处理、语音识别的音频输入端。# 安装 Python 依赖 vosk 、 sounddevice pip install vosk sounddevice【注】在基于 Debian 或 Ubuntu 的 Linux 系统上安装sounddevice这个 Python 库所依赖的一个底层系统库libportaudio2为sounddevice库准备好它所依赖的底层音频驱动环境。# 安装系统库 libportaudio2 用于 sounddevice apt-get update apt-get install -y libportaudio2二、使用教程# 导入队列库用于线程安全地传递音频数据 import queue import json # 导入 sounddevice 库用于从麦克风实时采集音频流并简称为 sd import sounddevice as sd # 从 vosk 库中导入 Model加载语音识别模型和 KaldiRecognizer识别器核心 from vosk import Model, KaldiRecognizer # --- 1. 全局参数设置 --- # 设置 VOSK 模型的文件夹路径。你需要下载一个模型并解压到此路径。 # 例如vosk-model-small-zh-cn-0.22 model_path vosk-model-small-cn-0.22 # 替换为你的vosk模型路径 # 设置音频采样率。VOSK 模型通常在 16000 Hz 下训练所以这里也用这个值。 samplerate 16000 # 确保此采样率与您的麦克风设置匹配 # 定义一个唤醒词。当识别到这个词时程序会做出反应。 wake_word 船长 # 定义唤醒词 # 创建一个队列对象。回调函数会把音频数据放进这个队列主线程再从中取出。 # 这是处理流式数据时避免阻塞的常用方法。 q queue.Queue() # --- 2. 音频数据回调函数 --- def callback(indata, frames, time, status): 这是 sounddevice 库的回调函数。 它会在一个独立的线程中被反复调用每次处理一小块音频数据。 # 如果 status 不为空说明音频流出现了问题如缓冲区溢出打印错误信息。 if status: print(status, flushTrue) # 将从麦克风采集到的音频数据indata转换成字节流然后放入队列 q 中。 # indata 是一个 NumPy 数组需要转换成 VOSK 识别器能处理的 bytes 格式。 q.put(bytes(indata)) # print(fReceived {len(indata)} bytes) # 音频流是否正常 # --- 3. 主程序逻辑 --- try: # --- 3.1 初始化模型和识别器 --- # 加载指定路径的 VOSK 模型。这是一个耗时操作通常只做一次。 model Model(model_path) # --- 3.2 启动音频流 --- # 使用 sd.RawInputStream 创建一个原始音频输入流。 # 这会持续在后台采集麦克风数据并通过 callback 函数处理。 with sd.RawInputStream(sampleratesamplerate, blocksize8000, dtypeint16, channels1, callbackcallback): # 打印提示信息告诉用户程序已经开始监听。 print(开始监听唤醒词...) # 创建一个 KaldiRecognizer 识别器实例并将加载好的模型和采样率传给它。 rec KaldiRecognizer(model, samplerate) # --- 3.3 持续监听和识别循环 --- # 进入一个无限循环持续处理音频数据直到检测到唤醒词或程序被中断。 while True: # 从队列中获取一小块音频数据。如果队列为空q.get() 会阻塞直到有数据可用。 data q.get() # 将获取到的音频数据喂给识别器。 # AcceptWaveform 方法会处理这份数据并返回一个布尔值 # 如果返回 True表示 VOSK 认为已经说完了完整的一句话有静音停顿。 if rec.AcceptWaveform(data): # 获取当前这句完整话的识别结果JSON 格式的字符串。 result rec.Result() # 使用 eval() 将 JSON 字符串解析成 Python 字典。 result_dict json.loads(result) recognized_text result_dict.get(text, ).replace( , ) # 去除识别结果中的所有空格再匹配 print(VOSK Result:, recognized_text) # 确认 VOSK 是否识别出了内容 # 检查字典中是否存在 text 键并且唤醒词是否在识别出的文本中。 # .lower() 是为了进行大小写不敏感的匹配。 if wake_word in recognized_text: # 如果检测到唤醒词打印提示信息。 print(f唤醒词 {wake_word} 被检测到!) # 在这里执行唤醒后的操作例如开始录音、播放回应、启动某个功能等。 # 示例中我们直接 break 退出循环。 break # --- 4. 异常处理 --- except KeyboardInterrupt: # 如果用户按下 CtrlC会触发 KeyboardInterrupt 异常。 # 捕获它并打印一个友好的停止信息。 print(\n停止监听) except Exception as e: # 捕获其他所有可能的异常如模型路径错误、麦克风权限问题等。 # 打印出具体的错误信息方便调试。 print(str(e))三、核心方法介绍1vosk库核心方法/对象方法 / 对象用途说明关键细节Model(model_path)加载本地语音识别模型必须传入解压后的模型文件夹路径不是.zip文件模型语言需与唤醒词一致如中文用zh-cn模型。只需初始化一次耗时但可复用。KaldiRecognizer(model, samplerate)创建语音识别器实例samplerate必须与音频输入采样率一致通常为 16000。支持流式识别内部维护状态。rec.AcceptWaveform(data)向识别器喂入一段音频数据bytesdata必须是int16格式的原始 PCM 字节流返回True表示识别出一个完整语句有静音边界。即使返回False也可能有部分结果可用rec.PartialResult()获取。rec.Result()获取上一句完整语音的识别结果返回 JSON 字符串如{text: 你好 小助手}。仅在AcceptWaveform返回True后调用才有意义。rec.PartialResult()可选获取当前正在说的不完整文本用于实时显示“正在听你说...”效果。在唤醒词检测中一般不需要。2sounddevice库核心方法/对象方法 / 对象用途说明关键细节sd.RawInputStream(...)创建原始音频输入流从麦克风实时采集samplerate16000必须与 VOSK 模型训练采样率一致channels1单声道VOSK 不支持立体声dtypeint1616位有符号整数PCM 标准格式callback每次采集到一块音频就自动调用该函数在后台线程运行callback(indata, frames, time, status)音频回调函数indata是 NumPy 数组需转为bytes才能被 VOSK 使用此函数不能做耗时操作会阻塞音频流通常只做“把数据放进队列”这种轻量操作sd.query_devices()调试用列出系统所有音频设备用于查找麦克风的device index。如果默认设备不对可在RawInputStream中指定device2等

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询