Vosk:开源语音识别项目简介
什么是Vosk?
Vosk是一个开源语音识别项目,由俄罗斯非营利组织DariaLab开发。该项目旨在提供一种免费、开源的语音识别工具,帮助开发者快速构建各种语音识别应用。
为什么要用Vosk?
本地部署的语音识别模型具有以下显著优势:
- 离线使用:无需网络连接,用户可在无网络环境下便捷使用。
- 快速响应:本地部署可实现更快的响应速度。
- 隐私保护:最大程度保护用户隐私,数据无需上传云端。
环境准备
下载模型
前往Vosk官网下载模型:VOSK Models。根据个人语言需求选择并下载对应模型。
安装Python库
Vosk需要以下Python库支持:
pip install json
pip install wave
pip install vosk
pip install pyaudio
示例代码
音频语音识别
目前Vosk仅支持wav
格式音频,无法直接识别mp3
格式。(也有可能是我下载的音频的问题)
import json
from vosk import Model, KaldiRecognizer
import wave
# 加载模型
model = Model("模型保存地址")
# 加载音频
sound = wave.open("音频文件地址")
# 创建识别器
recognize = KaldiRecognizer(model, 16000)
print('开始识别!')
while True:
# 每次读取音频文件4000帧
frame = sound.readframes(4000)
# 若读取不到数据则退出循环
if not frame:
break
# 传入数据进行识别
recognize.AcceptWaveform(frame)
result = json.loads(recognize.FinalResult())['text'].replace(' ', '')
print(result)
实时语音识别
import pyaudio
import json
from vosk import Model, KaldiRecognizer
import wave
# 加载模型
model = Model("模型保存地址")
# 创建麦克风对象
micro = pyaudio.PyAudio()
# 配置麦克风参数
receiver = micro.open(
format=pyaudio.paInt16, # 16位深度音频数据
channels=1, # 单声道
rate=16000, # 采样率16000Hz
input=True, # 从麦克风获取数据
frames_per_buffer=4000) # 每次读取数据块大小为4000帧
# 创建识别器
recognize = KaldiRecognizer(model, 16000)
print('开始识别!')
while True:
# 每次读取4000帧数据
frame = receiver.read(4000)
# 若识别到数据
if recognize.AcceptWaveform(frame):
trans = recognize.Result()
result = json.loads(trans)['text'].replace(' ', '')
print(result)
使用总结
个人使用体验如下:
- 实时语音识别流畅度较高,响应迅速。
- 但Vosk无法根据语义对用户输入的一段话进行合并或分段,导致识别结果可能断断续续或过于冗长。