DeepSpeech,一个语音识别超强的 Python 库!

文摘   2024-11-07 20:22   广东  

▼点击下方卡片关注我

▲点击上方卡片关注我


最近在做语音识别相关的项目,发现 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}”)

⚠️ 小贴士:


  • 音频文件必须是 16kHz 采样率的 WAV 格式

  • 识别中文需要另外下载中文模型

  • 音频质量越好,识别效果越棒


实时语音识别

更酷的是,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 跑太累了,该休息的时候得休息~


开源不易,且用且珍惜!


往期回顾

◆ FastAI:深度学习神器,这个Python库让AI入门更简单!

◆ Paramiko:SSH连接,Python的远程控制

◆ unittest:Python单元测试,守护你的代码

点赞分享


流向你

墨香玄
每日陪伴,聊聊关于车的这些事,理性与感性双管齐下,饮茶品文,有缘共谈!
 最新文章