当前位置: 代码网 > 服务器>软件设计>开源 > 【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战

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

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

目录

一、引言

二、whisper 模型原理

2.1 模型架构

2.2 语音处理

2.3 文本处理

三、whisper 模型实战

3.1 环境安装

3.2 模型下载

3.3 模型推理

3.4 完整代码

3.5 模型部署

四、总结


一、引言

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

二、whisper 模型原理

2.1 模型架构

whisper是一个典型的transformer encoder-decoder结构,针对语音和文本分别进行多任务(multitask)处理。

2.2 语音处理

2.3 文本处理

仅用通俗易懂的语言描述了下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连+投票。

如果您还有时间,可以看看我的其他文章:

《ai—工程篇》

ai智能体研发之路-工程篇(一):docker助力ai智能体开发提效

ai智能体研发之路-工程篇(二):dify智能体开发平台一键部署

ai智能体研发之路-工程篇(三):大模型推理服务框架ollama一键部署

ai智能体研发之路-工程篇(四):大模型推理服务框架xinference一键部署

ai智能体研发之路-工程篇(五):大模型推理服务框架localai一键部署

《ai—模型篇》

ai智能体研发之路-模型篇(一):大模型训练框架llama-factory在国内网络环境下的安装、部署及使用

ai智能体研发之路-模型篇(二):deepseek-v2-chat 训练与推理实战

ai智能体研发之路-模型篇(三):中文大模型开、闭源之争

ai智能体研发之路-模型篇(四):一文入门pytorch开发

ai智能体研发之路-模型篇(五):pytorch vs tensorflow框架dnn网络结构源码级对比

ai智能体研发之路-模型篇(六):【机器学习】基于tensorflow实现你的第一个dnn网络

ai智能体研发之路-模型篇(七):【机器学习】基于yolov10实现你的第一个视觉ai大模型

ai智能体研发之路-模型篇(八):【机器学习】qwen1.5-14b-chat大模型训练与推理实战

ai智能体研发之路-模型篇(九):【机器学习】glm4-9b-chat大模型/glm-4v-9b多模态大模型概述、原理及推理实战

ai智能体研发之路-模型篇(十):【机器学习】qwen2大模型原理、训练及推理部署实战

《ai—transformers应用》

【ai大模型】transformers大模型库(一):tokenizer

【ai大模型】transformers大模型库(二):automodelforcausallm

【ai大模型】transformers大模型库(三):特殊标记(special tokens)

【ai大模型】transformers大模型库(四):autotokenizer

【ai大模型】transformers大模型库(五):automodel、model head及查看模型结构

【ai大模型】transformers大模型库(六):torch.cuda.outofmemoryerror: cuda out of memory解决

【ai大模型】transformers大模型库(七):单机多卡推理之device_map

【ai大模型】transformers大模型库(八):大模型微调之loraconfig

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com