开源VOSK引擎免费语音转文字

关键字:语音识别、语音转文字、录音转文字。

会议、课程录音需要转文字怎么办呢?最简单的办法当然都是上“讯飞听见”。上传、付费、下载结果。是的,需要付费。如果你有大量的音频内容需要进行文字识别(同时对精度要求不高)还有别的办法吗?你可以使用开源的语音识别引擎来处理这些录音。

vosk-api

下面我就来介绍一下如何使用VOSK API来处理你的录音。

VOSK是一个离线开源语音识别工具。它可以识别16种语言,包括中文。你可以把它看做知名语音识别引擎Kaldi ASR的一个Fork(分支)。

步骤1:安装Python3环境

前往 https://www.python.org/downloads/ 下载Windows环境版本(Python 3.8以上)。安装过程中选中“Add Python directory to ‘PATH’ environment variable”。选中之后,Python可以像系统自带命令一样,在所有CMD目录下运行。否则每次执行Python都需要输入它的目录位置。其他选项按默认即可。

(可选操作)步骤1a:替换下载镜像为清华大学镜像源

在命令行输入 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这样对于国内用户来说下载速度会更快

步骤2:安装VOSK API库

打开CMD(命令提示符)输入 pip install vosk

步骤3:配置目录并下载语音模型

在桌面创建 vosk 目录。

前往https://alphacephei.com/vosk/models下载中文语音模型。

或者直接点击下面的链接中的一个(轻度使用选择small那个就行),并解压到vosk目录下。将解压出来的目录重命名为 “model”(不含引号)。

Chinese
vosk-model-small-cn-0.22 42M 23.54 (SpeechIO-02) 38.29 (SpeechIO-06) 17.15 (THCHS) Lightweight model for Android and RPi Apache 2.0
vosk-model-cn-0.22 1.3G 13.98 (SpeechIO-02) 27.30 (SpeechIO-06) 7.43 (THCHS) Big generic Chinese model for server processing Apache 2.0

步骤4:下载ffmpeg

前往这个网址 https://ffmpeg.org/download.html,根据你的操作系统,下载ffmpeg的编译版本。将下载好的二进制ffmpeg.exe文件放到工作目录下,和下面步骤的py文件放在一块。

步骤5:编辑Python语音识别脚本

安装打开,并创建新文件,拷贝以下内容:

# 使用方法
# 拷贝语音模型到当前目录下 并命名为 'model'
# 拷贝ffmpeg.exe文件到当前目录下
# 执行 python test_ffmpeg.py speech.mp3 即可

#!/usr/bin/env python3

from vosk import Model, KaldiRecognizer, SetLogLevel
import sys
import os
import wave
import subprocess
import json

SetLogLevel(0)

if not os.path.exists("model"):
    print ("Please download the model from https://alphacephei.com/vosk/models and unpack as 'model' in the current folder.")
    exit (1)

sample_rate=16000
model = Model("model")
rec = KaldiRecognizer(model, sample_rate)

process = subprocess.Popen(['./ffmpeg', '-loglevel', 'quiet', '-i',
                            sys.argv[1],
                            '-ar', str(sample_rate) , '-ac', '1', '-f', 's16le', '-'],
                            stdout=subprocess.PIPE)

f = open("result.txt", "w+")

while True:
    data = process.stdout.read(10000)
    if len(data) == 0:
        break
    if rec.AcceptWaveform(data):
        re = rec.Result()
        print(re)
        re = json.loads(re)
        f.write(re['text'] + '\n')
    else:
        print(rec.PartialResult())

f.close()

# print(rec.FinalResult())

另存为 vosk 目录下的 voice2text.py 文件。

(可选步骤)步骤5a:调试命令行

步骤4给出的代码最适合处理mp3录音文件。如果你想要处理更多形式的音频,例如实时录音,或者更多的对话模式,例如电影对白,你可以参考官方的代码,地址是 https://github.com/alphacep/vosk-api/tree/master/python/example 。

步骤5的代码就是根据官方的 test_ffmpeg.py 代码修改而来。

步骤6:运行程序并识别文字

将需要识别的mp3/wav/mp4等音视频文件拷贝至 桌面的vosk目录内。例如,我需要识别的文件为 story.mp3。

进入CMD环境,输入 cd ~/Desktop/vosk 进入工作目录,然后输入 python voice2text.py story.mp3

系统开始识别语音内容,你可以看到识别的文字在窗口内一段段显示出来。

Hb86d41908e264ee58546a57d49f73693p

最终结果将存储到 vosk 目录下的 result.txt 文件内。你可以在word中进一步处理这些内容。

发表评论