Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)

这篇具有很好参考价值的文章主要介绍了Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)

阿里的FunAsr对Whisper中文领域的转写能力造成了一定的挑战,但实际上,Whisper的使用者完全可以针对中文的语音做一些优化的措施,换句话说,Whisper的“默认”形态可能在中文领域斗不过FunAsr,但是经过中文特殊优化的Whisper就未必了。

中文文本标注优化

Whisper经常被人诟病的一点是对中文语音转写后标点符号的支持不够完备。首先安装whisper:

pip install -U openai-whisper

编写转写脚本:

import whisper  
device = "cuda:0" if torch.cuda.is_available() else "cpu"
audio = whisper.load_audio(audio_path)  
audio = whisper.pad_or_trim(audio)

model = whisper.load_model("large-v2",download_root="./whisper_model/")

mel = whisper.log_mel_spectrogram(audio).to(model.device)

options = whisper.DecodingOptions(beam_size=5)

result = whisper.decode(model, mel, options)  
print(result.text) 

程序返回:

Erwin_0.wav|Erwin|ZH|如果这个作战顺利。  
Erwin_1.wav|Erwin|ZH|你也许可以趁此机会干掉狩之巨人  
Erwin_10.wav|Erwin|ZH|如果到時候我不衝在最前面  
Erwin_11.wav|Erwin|ZH|他们根本不会往前冲然后我会第一个去死  
Erwin_12.wav|Erwin|ZH|地下室里到底有什么  
Erwin_13.wav|Erwin|ZH|也就无从知晓了好想去地下室看一看我之所以能撑着走到今天  
Erwin_14.wav|Erwin|ZH|就是因为相信这一天的到来。  
Erwin_15.wav|Erwin|ZH|因为艰辛着  
Erwin_16.wav|Erwin|ZH|我才想能够得到证实  
Erwin_17.wav|Erwin|ZH|我之前無數次的想過,要不然乾脆死了算了。  
Erwin_18.wav|Erwin|ZH|可即便如此,我還是想要實現父親的夢想。  
Erwin_19.wav|Erwin|ZH|然而现在  
Erwin_2.wav|Erwin|ZH|但得拿所有新兵不管選擇哪條路  
Erwin_20.wav|Erwin|ZH|她的答案就在我触手可及的地方  
Erwin_21.wav|Erwin|ZH|仅在咫尺死去的同伴们也是如此吗  
Erwin_22.wav|Erwin|ZH|那些流血的棲身,都是沒有意義的嗎?  
Erwin_23.wav|Erwin|ZH|不!不對!  
Erwin_24.wav|Erwin|ZH|那些死去士兵的意义将由我们来赋予  
Erwin_25.wav|Erwin|ZH|那些勇敢的死者可憐的死者  
Erwin_26.wav|Erwin|ZH|是他们的牺牲换来了我们活着的今天  
Erwin_27.wav|Erwin|ZH|让我们能站在这里否则今天我们将会死去  
Erwin_28.wav|Erwin|ZH|将依依托福给下一个活着的人  
Erwin_29.wav|Erwin|ZH|这就是我们与这个残酷的世界  
Erwin_3.wav|Erwin|ZH|我们基本都会死吧是的全灭的可能性相当的高  
Erwin_30.wav|Erwin|ZH|抗爭的意義  
Erwin_4.wav|Erwin|ZH|但事到如今,也只能做好玉石俱焚的觉悟。  
Erwin_5.wav|Erwin|ZH|將一切賭在獲勝渺茫的戰術上  
Erwin_6.wav|Erwin|ZH|到了这一步  
Erwin_7.wav|Erwin|ZH|要让那些年轻人们去死  
Erwin_8.wav|Erwin|ZH|就必须像一个一流的诈骗犯一样  
Erwin_9.wav|Erwin|ZH|对他们花言巧语一番

可以看到,除了语气特别强烈的素材,大部分都没有进行标点符号的标注。

但事实上,Whisper完全可以针对中文进行标注,只需要添加对应的引导词:

options = whisper.DecodingOptions(beam_size=5,prompt="生于忧患,死于欢乐。不亦快哉!")

这里通过prompt对其进行引导,通过逗号、句号以及感叹号对文本标注,引导后的效果:

Erwin_0.wav|Erwin|ZH|如果这个作战顺利。  
Erwin_1.wav|Erwin|ZH|你也许可以趁此机会干掉受之虚人。  
Erwin_10.wav|Erwin|ZH|如果到时候我不冲在最前面  
Erwin_11.wav|Erwin|ZH|他们根本不会往前冲,然后我会第一个去死。  
Erwin_12.wav|Erwin|ZH|地下室里到底有什么?  
Erwin_13.wav|Erwin|ZH|好想去地下室看一看,我之所以能撑着走到今天。  
Erwin_14.wav|Erwin|ZH|就是因为相信这一天的到来。  
Erwin_15.wav|Erwin|ZH|因为艰辛着D  
Erwin_16.wav|Erwin|ZH|我的猜想能够得到证实。  
Erwin_17.wav|Erwin|ZH|我之前无数次地想过,要不然干脆死了算了。  
Erwin_18.wav|Erwin|ZH|可即便如此,我还是想要实现父亲的梦想。  
Erwin_19.wav|Erwin|ZH|然而现在  
Erwin_2.wav|Erwin|ZH|但得拿所有新兵,不管选择哪条路。  
Erwin_20.wav|Erwin|ZH|他的答案就在我触手可及的地方。  
Erwin_21.wav|Erwin|ZH|竟在咫尺。死去的同伴们也是如此吗?  
Erwin_22.wav|Erwin|ZH|那些流血的牺牲,都是没有意义的吗?  
Erwin_23.wav|Erwin|ZH|不!不对!  
Erwin_24.wav|Erwin|ZH|那些死去士兵的意义将由我们来赋予!  
Erwin_25.wav|Erwin|ZH|那些勇敢的死者,可怜的死者!  
Erwin_26.wav|Erwin|ZH|是他们的牺牲换来了我们活着的今天!  
Erwin_27.wav|Erwin|ZH|让我们能站在这里,而今天我们将会死去!  
Erwin_28.wav|Erwin|ZH|将依依托福给下一个活着的人!  
Erwin_29.wav|Erwin|ZH|这就是我们与这个残酷的世界。  
Erwin_3.wav|Erwin|ZH|是的,全灭的可能性相当的高。  
Erwin_30.wav|Erwin|ZH|抗争的意义!  
Erwin_4.wav|Erwin|ZH|但事到如今,也只能做好玉石俱焚的觉悟。  
Erwin_5.wav|Erwin|ZH|将一切赌在获胜渺茫的战术上。  
Erwin_6.wav|Erwin|ZH|到了这一步  
Erwin_7.wav|Erwin|ZH|要让那些年轻人们去死。  
Erwin_8.wav|Erwin|ZH|就必须像一个一流的诈骗犯一样。  
Erwin_9.wav|Erwin|ZH|对他们花言巧语一番。

通过transformers来调用中文模型

transformers是一个用于自然语言处理(NLP)的开源库,由Hugging Face开发和维护。它提供了各种预训练的模型,包括文本生成、文本分类、命名实体识别等多种NLP任务的模型。transformers库基于Transformer模型架构,这是一种用于处理序列数据的深度学习模型。Transformer模型在NLP领域取得了巨大成功,因为它能够处理长距离依赖关系,并且在各种NLP任务上取得了优异的性能。

使用transformers库,开发人员可以轻松地访问和使用各种预训练的NLP模型,也可以使用该库进行模型的微调和训练。transformers库支持多种主流深度学习框架,包括PyTorch和TensorFlow。

首先安装transformers:

pip install -U transformers

编写转写代码:

from transformers import pipeline  
  
device = "cuda:0" if torch.cuda.is_available() else "cpu"  
  
def transcribe_bela(audio_path):  
  
    transcriber = pipeline(  
    "automatic-speech-recognition",   
    model="BELLE-2/Belle-whisper-large-v2-zh",  
    device=device  
    )  
  
    transcriber.model.config.forced_decoder_ids = (  
    transcriber.tokenizer.get_decoder_prompt_ids(  
        language="zh",   
        task="transcribe",  
    )  
    )  
  
    transcription = transcriber(audio_path)   
  
    print(transcription["text"])  
    return transcription["text"]

这里通过BELLE-2/Belle-whisper-large-v2-zh模型来进行转写,提高中文的识别准确度和效率。

这个模型是在whisper的large-v2模型上针对中文进行了微调,以增强中文语音识别能力, Belle-whisper-large-v2-zh 在中国 ASR 基准测试(包括 AISHELL1、AISHELL2、WENETSPEECH 和 HKUST)上表现出 30-70% 的相对改进。

该模型的官方地址:

https://huggingface.co/BELLE-2/Belle-whisper-large-v2-zh

当然,也不是没有缺陷,BELLE-2模型目前基于AISHELL、WENETSPEECH等数据做的微调,弱化了标点能力。

换句话说,没法通过引导词来打标,但其实也有其他解决方案,即可以基于标点模型 对转写文本加标点。比如这个方案:

https://modelscope.cn/models/damo/punc_ct-transformer_cn-en-common-vocab471067-large/summary

BELLE-2模型的作者相当热心,有问必答,这是笔者对其模型提的Issues:

https://github.com/LianjiaTech/BELLE/issues/571

现在该模型的瓶颈是,如果微调带标点的中文数据,这块开源数据相对比较少,无法进行有效的训练。

除了大模型的中文优化版本,也有针对small模型的中文优化版本:

https://huggingface.co/Jingmiao/whisper-small-chinese_base

结语

Whisper开源模型通过transformers的微调,可以将预训练模型应用于特定的中文NLP任务,从而提高模型在该任务上的性能。微调使模型能够学习适应特定任务的特征和模式,从而实现更好的效果。文章来源地址https://www.toymoban.com/news/detail-824333.html

到了这里,关于Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • OpenAI Whisper中文语音识别效果尝试和应用(一)

            近期,OpenAI发布了Whisper语音识别模型,声称其在英语语音识别方面已接近人类水平的鲁棒性和准确性。出于对自动语音识别的兴趣,本人对此进行了一些尝试,看看它对中文语音识别的效果。         本内容仅供对语音识别有兴趣或者仅仅希望应用的入门朋友

    2023年04月18日
    浏览(6)
  • 学习实践-Whisper语音识别模型实战(部署+运行)

    学习实践-Whisper语音识别模型实战(部署+运行)

    OpenAI的语音识别模型Whisper,Whisper 是一个自动语音识别(ASR,Automatic Speech Recognition)系统,OpenAI 通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练。OpenAI 认为使用这样一个庞大而多样的数据集,可以提高对口音、背景噪音

    2024年02月06日
    浏览(6)
  • whisper实践--基于whisper+pyqt5开发的语音识别翻译生成字幕工具

    whisper实践--基于whisper+pyqt5开发的语音识别翻译生成字幕工具

    大家新年快乐,事业生活蒸蒸日上,解封的第一个年,想必大家都回家过年,好好陪陪家人了吧,这篇文章也是我在老家码的,还记得上篇我带大家基本了解了whisper,相信大家对whisper是什么,怎么安装whisper,以及使用都有了一个认识,这次作为新年第一篇文章,我将介绍一

    2024年02月01日
    浏览(8)
  • 中文语音识别转文字的王者,阿里达摩院FunAsr足可与Whisper相颉顽

    中文语音识别转文字的王者,阿里达摩院FunAsr足可与Whisper相颉顽

    君不言语音识别技术则已,言则必称Whisper,没错,OpenAi开源的Whisper确实是世界主流语音识别技术的魁首,但在中文领域,有一个足以和Whisper相颉顽的项目,那就是阿里达摩院自研的FunAsr。 FunAsr主要依托达摩院发布的Paraformer非自回归端到端语音识别模型,它具有高精度、高

    2024年02月03日
    浏览(9)
  • 开源(离线)中文语音识别ASR(语音转文本)工具整理

    开源(离线)中文语音识别ASR(语音转文本)工具整理 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识(Automatic Speech Recognition,ASR)模型是被训练来运行语音辨识与翻

    2024年02月13日
    浏览(35)
  • 极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践

    业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp 则是 Whisper 模型的 C/C++ 移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了 Core ML 支持,完美适配苹果M系列芯片。 Whisper.cpp的张量

    2024年02月02日
    浏览(10)
  • 【Python实用API】语音转文本-whisper

    【Python实用API】语音转文本-whisper

    (1)起因 :最近在油管上下载视频,但是下载后发现两个问题,一是下载的视频无字幕;二是找了半天油管的字幕下载途径,结果发现下载的字幕的提取效果不太好。于是乎发现OpenAI发布的 字幕提取 开源库Whisper可解决我的问题,因此写此博文只是为了记录我学习的过程,

    2024年04月13日
    浏览(9)
  • OpenAI Whisper 语音识别 API 模型使用 | python 语音识别

    OpenAI 除了 ChatGPT 的 GPT3.5 API 更新之外,又推出了一个 Whisper 的语音识别模型。支持96种语言。 Python 安装 openai 库后,把需要翻译的音频目录放进去,运行程序即可生成音频对应的文字。 以上。

    2024年02月16日
    浏览(30)
  • Whisper 语音识别模型

    Whisper 语音识别模型 Whisper 是一种通用的语音识别模型。它是在包含各种音频的大型数据集上训练的,也是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。 开源项目地址:https://github.com/openai/whisper Whisper 语音识别模型 Transformer 序列到序列模型针对各种语音

    2024年02月16日
    浏览(9)
  • 语音识别 - ASR whisper

    语音识别 - ASR whisper

    目录 1. 简单介绍 2. 代码调用 Introducing Whisper https://openai.com/blog/whisper/ OpenAI 的开源自动语音识别神经网络 whisper 安装 Python 调用

    2024年02月12日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包