最近在做语音识别相关的项目,发现 Mozilla 开源的 DeepSpeech 真是太好用了!这个基于 TensorFlow 的语音识别引擎,准确度相当高,还支持多种语言模型。咱们一起来看看这个神器怎么玩。
安装 DeepSpeech 贼简单,pip 一行命令搞定:
pip install deepspeech
不过得提醒你,安装之前最好先配置好 Python 虚拟环境,省得跟其他项目的依赖打架:
python -m venv deepspeech-env
source deepspeech-env/bin/activate # Linux/Mac
# Windows用户用这个:
# deepspeech-env\Scripts\activate
⚠️ 小贴士:
建议用 Python 3.6 以上版本
机器内存最好大于 4GB
GPU 版本性能会更好,但需要额外配置 CUDA
DeepSpeech 用起来最爽的就是它的预训练模型,啥都不用训练,下载就能用:
# 下载模型文件
import wget
wget.download('https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.pbmm')
wget.download('https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.scorer')
整一个简单的例子,看看这货到底多厉害:
import deepspeech
import wave
import numpy as np
# 加载模型
model_file = 'deepspeech-0.9.3-models.pbmm'
scorer_file = 'deepspeech-0.9.3-models.scorer'
model = deepspeech.Model(model_file)
model.enableExternalScorer(scorer_file)
# 读取音频文件
def read_wav_file(filename):
with wave.open(filename, 'rb') as w:
rate = w.getframerate()
frames = w.getnframes()
buffer = w.readframes(frames)
return buffer, rate
# 识别音频
audio_file = 'test.wav'
buffer, rate = read_wav_file(audio_file)
data = np.frombuffer(buffer, dtype=np.int16)
text = model.stt(data)
print(f“识别结果: {text}”)
⚠️ 小贴士:
更酷的是,DeepSpeech 还能搞实时语音识别:
import pyaudio
# 配置音频流
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# 创建语音识别流
context = model.createStream()
print(“开始说话...”)
try:
while True:
data = stream.read(CHUNK)
if len(data) == 0:
break
data = np.frombuffer(data, dtype=np.int16)
context.feedAudioContent(data)
text = context.intermediateDecode()
print(f“\r当前识别: {text}”, end=“”)
except KeyboardInterrupt:
print(“\n识别结束”)
stream.stop_stream()
stream.close()
p.terminate()
⚠️ 小贴士:
实时识别对CPU要求比较高
建议用耳机防止回声干扰
说话速度别太快,发音要清晰
想让识别更准?试试这些参数调优技巧:
# 调整语言模型权重
model.setBeamWidth(500) # 默认为 1000
model.setScorerAlphaBeta(alpha=0.931289039105002,
beta=1.1834137581510284)
# 使用 VAD(语音活动检测)
import webrtcvad
vad = webrtcvad.Vad(3) # 灵敏度 0-3
DeepSpeech 这个库是真的强,识别准确率能达到 90% 以上。不过干活的时候记得给机器扎个辫子,别让 CPU 跑太累了,该休息的时候得休息~
开源不易,且用且珍惜!