AIAI·

【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战

投稿時間:2024-08-27 23:20:35閲覧数:31
専門記事
転載は出所を明記してください
執筆カテゴリー

一、引言

上一篇对​​​​​​​ChatTTS文本转语音模型原理和实战进行了讲解,第6次拿到了热榜第一🏆。今天,分享其对称功能(语音转文本)模型:Whisper。Whisper由OpenAI研发并开源,参数量最小39M,最大1550M,支持包含中文在内的多种语言。由于其低资源成本、优质的生存效果,被广泛应用于音乐识别、私信聊天、同声传译、人机交互等各种语音转文本场景,且商业化后价格不菲。今天免费分享给大家,不要再去花钱买语音识别服务啦!

二、Whisper 模型原理

2.1 模型架构

Whisper是一个典型的transformer Encoder-Decoder结构,针对语音和文本分别进行多任务(Multitask)处理。

2.2 语音处理

Whisper语音处理:基于680000小时音频数据进行训练,包含英文、其他语言转英文、非英文等多种语言。将音频数据转换成梅尔频谱图,再经过两个卷积层后送入 Transformer 模型。

2.3 文本处理

Whisper文本处理:文本token包含3类:special tokens(标记tokens)、text tokens(文本tokens)、timestamp tokens(时间戳),基于标记tokens控制文本的开始和结束,基于timestamp tokens让语音时间与文本对其。

仅用通俗易懂的语言描述了下Whisper的原理,如果想更深入的了解,请参考OpenAI官方Whisper论文。

三、Whisper 模型实战

3.1 环境安装

本文基于HuggingFace的transfomers库,采用pipeline方式进行极简单的模型实用实战,具体的pipeline以及其他transformers模型使用方式可以参考我之前的文章。

所以,您仅需要安装transformers库。

pip install transformers

当前,语音经常会和视频等其他媒介联系起来,所以我建议您顺带安装多媒体处理工具ffmpeg,没有提供pip库,仅能依靠apt-get安装。

sudo apt-get update && apt-get install ffmpeg

3.2 模型下载

基于pipeline会自动进行模型下载,当然,如果您的网速不行,请替换HF_ENDPOINT为国内镜像。

os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-medium")

不同尺寸模型参数量、多语言支持情况、需要现存大小以及推理速度如下

3.3 模型推理

推理函数仅需2行,非常简单,基于pipeline实例化1个模型对象,将要转换的音频文件传至模型对象中即可:


def speech2text(speech_file):
    transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-medium")
    text_dict = transcriber(speech_file)
    return text_dict

3.4 完整代码

运行完整代码:

python run_whisper.py -a output_video_enhanced.mp3 

完整代码如下:

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"
 
from transformers import pipeline
import subprocess
 
def speech2text(speech_file):
    transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-medium")
    text_dict = transcriber(speech_file)
    return text_dict
 
import argparse
import json
def main():
    parser = argparse.ArgumentParser(description="语音转文本")
    parser.add_argument("--audio","-a", type=str, help="输出音频文件路径")
 
    args = parser.parse_args()
    print(args) 
 
    text_dict = speech2text(args.audio)
    #print("视频内的文本是:\n" +  text_dict["text"])
    print("视频内的文本是:\n"+ json.dumps(text_dict,indent=4))
 
if __name__=="__main__":
    main()

这里采用argparse处理命令行参数,将mp3音频文件输入后,经过speech2text语音转文本函数处理,返回对应的文本,结果如下:

3.5 模型部署

如果想将该服务部署成语音识别API服务,可以参考之前的FastAPI相关文章。

四、总结

本文是上一篇chatTTS文章的夫妻篇,既然教了大家如何将文本转语音,就一定要教大家如何将语音转成文本,这样技术体系才完整。首先简要概述了Whisper的模型原理,然后基于transformers的pipeline库2行代码实现了Whisper模型推理,希望可以帮助到大家。码字不易,如果喜欢期待您的关注+3连+投票。


原文链接:https://blog.csdn.net/weixin_48007632/article/details/140046145

コメント欄

まだコメントがありません。最初のコメントを投稿しましょう!

弦圈热门内容

暗物质:奇异黑洞可能是暗物质的副产品

对于我们能看到的每一公斤物质,无论是你桌上的电脑,还是遥远的恒星和星系,都有5公斤不可见的物质渗透在我们的周围。这种“暗物质”是一种神秘的存在,它规避了所有形式的直接观测,然而却通过它对可见物体的无形牵引力让我们感受到它的存在。图片来源网络五十年前,物理学家斯蒂芬·霍金提出了一个关于暗物质可能是什么的想法:一个黑洞群体,它们可能在大爆炸后不久就形成了。这样的“原始”黑洞不会是我们今天探测到的巨人,而是微观区域的超密物质,它们会在大爆炸后的第一枚万亿分之一秒形成,然后崩溃并散布在宇宙中,以一种可以解释我们今天所知的暗物质的方式牵引周围的时空。现在,麻省理工学院的物理学家发现,这个原始过程也会产生一些意想不到的伴侣:更小的黑洞,它们拥有前所未有的称为“色荷”的核物理属性的数量。这些最小的,“超负荷”的黑洞将是一种全新的物质状态,它们可能在诞生后不久的一小部分秒内蒸发。然而,它们仍可能影响了一个关键的宇宙学转变:第一次原子核被锻造的时候。物理学家假设,带色荷的黑洞可能影响了融合核的平衡,在一种天文学家将来可能通过未来测量检测到的方式。这样的观测将有说服力地指向原始黑洞作为今天所有暗物质的根源 ...

cover

如果一个人身体死了但大脑活在营养液中,是不是活在虚拟世界里?

在现代科幻电影的奇异世界中,常常会出现这样的场景:一个人的身体已经死亡,但大脑却被保存在营养液中,继续在虚拟世界里体验着生命。《黑客帝国》中的就是这样一种构想,人类的大脑通过电信号与计算机系统连接,生活在一个被编程的虚幻世界中。然而,这种幻想并非纯粹的娱乐创作,它也反映了人们对大脑与身体关系的深层思考。哲学家希拉里·普特南提出的“缸中之脑”假想,把这种思考推向了极致。他设想了一个邪恶科学家通过手术将人的大脑取出,放置在营养液中维持生命,再通过计算机程序向大脑输入信息,制造出一个人工的虚拟现实。在这个假想中,被操作的大脑仍然可以体验到生活的一切,但所有的感知和记忆都可能是虚假的。这样的假想引发了一个问题:如果一个人的大脑被置于这样的环境中,那他或她是否真的活在虚拟世界里?揭秘大脑的复杂运作机制要探讨这个问题,我们需要从大脑的运作机制入手。每个人体内都存在着一个错综复杂的神经系统,这个系统由神经纤维构成,包括各种神经组织,如大脑和脊髓。这些神经组织负责将神经信号传递给身体的各个器官,同时也将各个器官的信号传递回大脑和脊髓。正是通过这样的信号传递,我们才能感受到外部世界的各种刺激,并做出相应 ...

cover

最新发现:火星上有大量液态水,多到可覆盖整个火星,且水深1.6公里

多年来的探测数据表明,在火星表面存在着大量类似地球河道和河床的地形结构,其长度往往可达数百公里,明显是由液态水长时间侵蚀和冲刷而形成的,而火星表面的很多盆地和低洼地区,其边缘还存在着类似海岸线的特征。除此之外,在火星表面,还发现了广泛分布的水合矿物以及类似于地球上由水过程形成的沉积岩,这些分层岩石通常显示出交错层理等特征,被认为有水流过时形成的痕迹。所以科学家据此认为,在遥远的过去,火星表面曾经也存在由大量液态水形成的江河湖海,而那时的火星很可能也像地球一样宜居。然而我们都知道,现在的火星表面是一片干涸的荒芜世界,那么,火星上的水到哪里去了呢?对此,一个常见的观点就是,由于火星太小,其核心早早地冷却了,这会导致其磁场的消失,在没有了磁场的保护之后,火星的大气就被太阳风持续剥离,这导致了火星表面的气压显著下降,使得液态水无法在表面存在,于是水开始蒸发并被太阳风不断地“吹”走,而火星大气的变薄还导致了火星表面的温度急剧下降,于是剩余的液态水都冻结起来,形成了火星两极的冰盖或隐藏在火星地下的冰土之中。(↑火星北极的冰盖)可以看到,这样的解释是比较合理的,该观点也因此得到了较多的认同,所以人们 ...

光速存在极限是因为处理器有局限?

长期以来,物理学家一直在努力解释,为什么宇宙一开始就具备条件适合生命进化?为什么物理定律和常数,恰好是允许恒星、行星以及生命最终能出现的非常具体的数值?而让宇宙膨胀的那种力,暗能量,就比理论认为的要弱得多。实际应该是让宇宙物质全都聚集在一起,而不是像观察到的在膨胀撕裂。一个常见的答案是我们生活在一个无限多的宇宙中,即多重宇宙,所以我们不应该对其中至少有一个宇宙 会变成我们这个宇宙感到惊讶。但另一个看上去天方夜谭的答案,却越来越被重视,那就是我们的宇宙是被一个外在的计算机模拟出来的,这个计算机有人(或许是一个先进的外星物种)在微调各种参数。这个看上去很离谱的理论,目前已经得到信息物理学这门科学分支的理论支持。信息物理学认为时空和物质并不是宇宙的本质。相反,我们所处的物理现实,本质上是由信息比特组成的,而我们感受到的时空体验就是从这些信息比特中产生的。而所谓的温度,只是原子聚集在一起运动的另一种说法。从根本上说,没有一个原子具有温度。这极大地让科学家相信,我们的整个宇宙,实际上只是计算机模拟出来的事实,存在巨大可能性。不过,这个想法并不是最近才提出的。早在1989 年,传奇物理学家约翰·阿 ...

cover

有感而发,给小猫咪讲讲康德

前言:某日某夜,路遇小猫,小猫两步一回头,最后谨慎地坐在我脚边蹭我,我兴致忽起,遂边投喂边给小猫讲起来康德1 给猫讲康德在【牛顿猫】和【莱布尼茨猫】发展了微积分后,猫界对自然哲学的 研究就突飞猛进,而大众对猫的【认识论】依旧停滞不前,基础不牢,则地动山摇,科学认知的大厦有摇摇欲坠的风险。此时的认识论两派打架,分别是以【莱布尼茨猫】为代表的【纯粹理性派】,和以【休谟猫】为代表的【经验派】。那时候【亚里士多德猫】主义派把知识判断分为两类,【分析的】和 【综合的】。【分析】意思的可以从主体对象上直接得到的,比如这句话“一 只聪明的小猫 ”,“聪明 ”这一个特性可以直接从我们的主体,也就是这整 句话分析得到,我们就会说“小猫 ”的特性是“聪明 ”;而【综合】则代表其包括了其他的经验性的东西, 比方说“小猫 ”的特性是“吃小鱼干 ”, 我们从“一只聪明的小猫 ”这句话里,得不出“吃小鱼干 ”这个特性,“小猫 ”和“吃小鱼干 ”这作为认识到的经验我们曾见过,会很自然地联系起来。那么猫如何认识这个世界的呢?当然是靠芝士(知识)! 一只小猫天生就会喝奶,它不需要任何感观经验,这叫【先天知识】,一只小猫 ...

cover

当一个人张嘴闭嘴都说这些话,大概率,他要坑你了

人情社会的本质,就是人搞人,人整人,人坑人。所有的人情世故,要么是为了自己谋求利益,要么是跟别人搞好关系,间接谋求利益,要么是算计别人。基本上,人情世故就是“人整人”的直接反映。要想在充满人情世故的社会当中生存,就需要我们具备一种本事——听得懂别人的言外之意。别人说什么,我们不仅要把表面的言语搞清楚,还需要把言语背后的深意搞清楚。如此,才能避免被人算计,避免被人套路。普通人之所以容易被人套路,就是因为他们只看表象,只听场面话,而无法透过现象看本质。当一个人张嘴闭嘴都说这些话,大概率,别人要坑你了。一、张嘴闭嘴都是“仁义道德”。在《水浒传》里边,有一个超级伪君子,及时雨宋江。他文不如吴用,武不如林冲,但他还是当了梁山之主,因为宋江足够虚伪,懂得忽悠人。宋江跟吴用坑了玉麒麟卢俊义,害得他家破人亡,逼得卢俊义不得不投靠梁山。对于被他害惨的卢俊义,宋江非但没有羞愧,还满嘴仁义道德,声称要为卢员外报仇雪恨,同时还要让卢员外当梁山之主。宋江说的这些话,听得卢俊义一愣一愣的。哪怕卢俊义知道是宋江等人坑了自己,他也不好说什么,也就心甘情愿入伙了,当了梁山二当家。江湖中,永远都不缺像宋江这样的人。他们一 ...