Whisper语音识别

Whisper是一个开源的自动语音识别系统,它在网络上收集了680,000小时的多语种和多任务监督数据进行训练,使得它可以将多种语言的音频转文字。

Whisper的好处是开源免费、支持多语种(包括中文),有不同模型可供选择,最终的效果比市面上很多音频转文字的效果都要好

目前有5个模型:

ModelRequired VRAMRelative speed
tiny~1 GB~32x
base~1 GB~16x
small~2 GB~6x
medium~5 GB~2x
large~10 GB~1x

1.创建Python工程

基础操作,不做细述。

2.安装Whisper

  • pip install openai-whisper
  • pip install stable-ts

注意:上面安装的两个库,默认使用的是cpu版本的torch和torchaudio,如果要使用gpu推理,请自行安装cuda版本的torch和torchaudio。

分别执行上述的pip命令来安装必要的库。

3.运行

新建一个Python脚本,叫做"test_whisper.py"。然后复制下面的代码:

import whisper
import stable_whisper as whisper

class WhisperTranscriber(object):

    def __init__(self, model_name):
        self.model = whisper.load_model(model_name)

    def whisper_transcribe(self, audio_path):
        audio = self.model.transcribe(audio_path, fp16=False, language='Chinese')

        # 连接所有片段的文本,加上逗号
        transcribed_text = ""
        for segment in audio:
            for word_timing in segment.words:
                transcribed_text += word_timing.word + " "
            # 在每一段文本后加上逗号
            transcribed_text += ","

        return transcribed_text.strip(",")

if __name__ == '__main__':
    transcriber = WhisperTranscriber("small")
    text = transcriber.whisper_transcribe("test.mp3")
    print(text)

根据情况修改使用的模型。

并找一段mp3来放到项目根目录,重命名为"test.mp3"。

然后运行脚本。注意:模型越大,推理的时间越长。

当本地电脑没有模型时,脚本会自动下载,可能时间比较长,耐心等待。如下图:

等到模型下载完成后,可以看到就在推理预测语音中的文字了:

等到推理完成后,就能看到结果了:

可以看到small模型推理出来的有一些错别字(能看出来是什么歌吗?),为了测试效果,接着试试medium模型推理的如何,下面是推理结果:

可以看到medium模型已经很准确了,非常nice!