Huggingface入门实践 Audio-NLP 语音-文字模型调用(一)

吴恩达LLM-Huggingface_哔哩哔哩_bilibili

目录

0. huggingface 根据需求寻找开源模型

1. Whisper模型 语音识别任务

2. blenderbot 聊天机器人

3. 文本翻译模型translator

4. BART 模型摘要器(summarizer)

5. sentence-transformers 句子相似度


0. huggingface 根据需求寻找开源模型

https://huggingface.co/models 可以在huggingface官网上找对应的模型

根据任务task(CV NLP 多模态之类) language 等指标进行筛选。

还可以在右上角的Tasks里 了解各种机器学习任务

  

pipeline 是一个来自 Hugging Face Transformers 库的高级接口。 可以快速调用预训练模型完成常见任务,比如:文本分类、翻译、摘要、问答、语音识别等等。调用方式如下:

from transformers import pipeline

我们后续会进行一些示例的调用 系统先会进行模型的下载和保存,建议事先设置一下环境变量HF_HOME 到某一希望保存的路径,比如 'D:\huggingface_cache' 。

1. Whisper模型 语音识别任务

例如在tasks中挑选了一个 语音识别任务 Automatic Speech Recognition 

打开网址的右侧会有一些 模型和数据集

选择第一个 openai的模型之后 右上角的Use this model 展示如何调用这个模型

为了能够读取音频 还需要安装一下ffmpeg   以下为一个release版本的安装包

https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip

再将 ffmpeg/bin 文件夹路径添加到 系统环境变量的 PATH 中

并在cmd 中 ffmpeg -version 验证安装成功。

然后就可以进行直接调用  model="openai/whisper-large-v3"

from transformers import pipeline
pipe = pipeline("automatic-speech-recognition",model="openai/whisper-large-v3",framework="pt", # 使用 PyTorch 框架chunk_length_s=30 # 每段音频的最大长度(秒))
result = pipe("audio.m4a") # 自动识别语言转换
print(result)
# {'text': '我爱南京大学。'}result = pipe("audio.m4a",generate_kwargs={"task": "translate"}) # 音频转文字并翻译为英文
print(result)
# {'text': ' I love Nanjing University.'}

如果要设置一些其他的参数 可以看model的Usage解释

比如 用generate_kwargs   language指定源语言(不指定则自动预测) translate可以翻译为英语

还可以设定一些其他参数  比如长度、束搜索、温度、声音大小阈值、概率对数阈值等

generate_kwargs = {"max_new_tokens": 448,  # 最大生成长度"num_beams": 1,  # 束搜索宽度"condition_on_prev_tokens": False,  # 是否依赖前token"temperature": (0.0, 0.2, 0.4, 0.6, 0.8, 1.0),  # 温度生成多样性"logprob_threshold": -1.0,  # 概率阈值"no_speech_threshold": 0.6,  # 静音阈值"return_timestamps": True,  # 返回时间戳
}# 调用管道
result = pipe(sample, generate_kwargs=generate_kwargs)
print(result)

2. blenderbot 聊天机器人

https://huggingface.co/models?other=blenderbot&sort=trending 一些blenderbot模型

https://huggingface.co/facebook/blenderbot-400M-distill

使用预训练的分词器和模型  message -> 分词器encode -> model -> 分词器decode

模型参数量400M较小,效果不太好。 简单版调用:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("facebook/blenderbot-400M-distill")
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/blenderbot-400M-distill")# 用户输入
user_message = "Good morning."# 编码输入
inputs = tokenizer(user_message, return_tensors="pt").to(model.device)# 生成回复
outputs = model.generate(**inputs, max_new_tokens=40)# 解码输出
print("🤖 Bot:", tokenizer.decode(outputs[0], skip_special_tokens=True))
# 🤖 Bot:  Good morning to you as well. How is your morning going so far? Do you have any plans?

想实现上下文的记忆性,就要开一个字符串context把之前对话记录下来 一起作为input

还可以再对分词器和模型 分别加一些参数设置

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torchtokenizer = AutoTokenizer.from_pretrained("facebook/blenderbot-400M-distill")
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/blenderbot-400M-distill").to("cuda" if torch.cuda.is_available() else "cpu"
)# 轮次分隔符
eos = tokenizer.eos_token or "</s>"
context = "" # 全局对话记录上下文def chat_once(user_text, max_new_tokens=80):global context  # 声明使用上面的全局 context# 构造提示:user 一句 + 以 bot: 结尾,便于模型续写context += f"user: {user_text}{eos}bot:"inputs = tokenizer(context,return_tensors="pt",truncation=True,max_length=1024  # 防止过长).to(model.device)outputs = model.generate(**inputs,max_new_tokens=max_new_tokens,do_sample=True,temperature=0.7,top_p=0.9,num_beams=1,no_repeat_ngram_size=3)# 解码整段,然后取出最后一个 "bot:" 之后的内容作为回复whole = tokenizer.decode(outputs[0], skip_special_tokens=True)reply = whole.split("bot:")[-1].strip()# 把本轮回复写回上下文,并加分隔符context += f" {reply}{eos}"return replyprint("🤖", chat_once("Good morning."))
print("🤖", chat_once("What can you do?"))
print("🤖", chat_once("Recommend a movie for tonight."))'''🤖 Good morning! I hope you had a good day today.  Do you have any plans?
🤖 I am going to go on a vacation to visit my family! I can't wait!
🤖 Good morning, what movie are you going to see? I've got plans for this weekend.'''

3. 文本翻译模型translator

NLLB-200 Distilled 600M 模型 200 种语言互译

https://huggingface.co/facebook/nllb-200-distilled-600M?library=transformers

from transformers import pipeline
import torch# 加载翻译模型
translator = pipeline(task="translation",model="facebook/nllb-200-distilled-600M",torch_dtype=torch.bfloat16  # 如果你的显卡支持 bfloat16
)
# 要翻译的文本
text = """My puppy is adorable. Your kitten is cute. Her panda is friendly. His llama is thoughtful. We all have nice pets!"""# 翻译:从英文 -> 法语
text_translated = translator(text,src_lang="eng_Latn",   # 源语言:英语tgt_lang="fra_Latn"    # 目标语言:法语
)
print(text_translated)# [{'translation_text': 'Mon chiot est adorable, ton chaton est mignon, son panda est ami, sa lamme est attentive, nous avons tous de beaux animaux de compagnie.'}]# 翻译:从英文 -> 中文
text_translated = translator(text,src_lang="eng_Latn",   # 源语言:英语tgt_lang="zho_Hans"    # 目标语言:中文
)
print(text_translated)# [{'translation_text': '我的狗很可爱,你的小猫很可爱,她的熊猫很友好,他的拉马很有心情.我们都有好物!'}]

4. BART 模型摘要器(summarizer)

https://huggingface.co/facebook/bart-large-cnn

from transformers import pipeline
import torch# 创建摘要器(summarizer),用 BART 模型
summarizer = pipeline(task="summarization",model="facebook/bart-large-cnn",framework="pt",  # 若只用 PyTorch,不加载 TensorFlowtorch_dtype=torch.bfloat16
)# 输入要摘要的文本(南京大学介绍)
text = """Nanjing University, located in Nanjing, Jiangsu Province, China,
is one of the oldest and most prestigious institutions of higher
learning in China. It traces its history back to 1902 and has played
a significant role in modern Chinese education. The university is
known for its strong programs in sciences, engineering, humanities,
and social sciences. It has a large number of distinguished alumni
and is recognized as a member of China's Double First-Class initiative.
The main campuses are located in Gulou and Xianlin, offering a modern
learning and research environment for both domestic and international students."""# 执行摘要 设置长度范围
summary = summarizer(text,min_length=10,max_length=80
)print(summary[0]["summary_text"])
# Nanjing University is one of the oldest and most prestigious universities in China. It is known for its strong programs in sciences, engineering, and humanities.

5. sentence-transformers 句子相似度

https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2

句子转化为embedding 并用向量余弦值求相似度

from sentence_transformers import SentenceTransformer,util# 加载模型
model = SentenceTransformer("all-MiniLM-L6-v2")# 待编码的句子 1
sentences1 = ['The cat sits outside','A man is playing guitar','The movies are awesome'
]
embeddings1 = model.encode(sentences1, convert_to_tensor=True) # 编码得到向量
print(embeddings1)# 待编码的句子 2
sentences2 = ['The dog plays in the garden','A woman watches TV','The new movie is so great'
]
embeddings2 = model.encode(sentences2, convert_to_tensor=True) # 编码得到向量
print(embeddings2)
print(util.cos_sim(embeddings1, embeddings2))

6. Zero-Shot Audio Classification 零样本音频分类 https://huggingface.co/laion/clap-htsat-unfused

7. Text-to-Speech 文字转语音 https://huggingface.co/kakao-enterprise/vits-ljs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919883.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-Pandas GroupBy 进阶与透视表学习

​​一、数据分组&#xff08;GroupBy&#xff09;​​​​核心概念​​&#xff1a;将数据按指定字段分组&#xff0c;对每组进行聚合、转换或过滤操作。​​1. 分组聚合&#xff08;Aggregation&#xff09;​​将分组数据聚合成单个值&#xff08;如平均值、总和&#xff09…

MQTT 核心概念与协议演进全景解读(二)

MQTT 在物联网中的应用实例智能家居中的设备联动在智能家居系统里&#xff0c;MQTT 协议扮演着至关重要的角色&#xff0c;是实现设备间高效通信与智能联动的核心枢纽。以常见的智能家居场景为例&#xff0c;当清晨的阳光缓缓升起&#xff0c;光线传感器检测到光照强度的变化&a…

燧原科技招大模型训练算法工程师

高级大模型训练算法工程师&#xff08;岗位信息已经经过jobleap.cn授权&#xff0c;可在csdn发布&#xff09;燧原科技 上海职位描述负责大模型在AI芯片预训练和微调等研发和客户支持工作&#xff1b; 参与大模型训练精度分析和性能调优&#xff1b;职位要求985/211大学计算机…

基于Java虚拟线程的高并发作业执行框架设计与性能优化实践指南

基于Java虚拟线程的高并发作业执行框架设计与性能优化实践指南 一、技术背景与应用场景 在分布式系统和微服务架构中&#xff0c;后端常需承载海量异步作业&#xff08;如批量数据处理、定时任务、异步消息消费等&#xff09;&#xff0c;对作业执行框架提出了高并发、高吞吐、…

了解 PostgreSQL 的 MVCC 可见性基本检查规则

1. 引言 根据 Vadim Mikheev 的说法&#xff0c;PostgreSQL 的多版本并发控制&#xff08;MVCC&#xff09;是一种“在多用户环境中提高数据库性能的高级技术”。该技术要求系统中存在同一数据元组的多个“版本”&#xff0c;这些版本由不同时间段内获取的快照进行管理。换句话…

普通烘箱 vs 铠德科技防静电烘箱:深度对比与选择指南

在电子制造、化工、航空航天等精密工业领域&#xff0c;烘箱作为关键工艺设备&#xff0c;其性能直接关系到产品可靠性和生产安全。普通烘箱与防静电烘箱的核心差异在于静电防护能力&#xff0c;而铠德科技作为防静电烘箱领域的专业厂商&#xff0c;其产品通过技术创新重新定义…

达梦数据库巡检常用SQL(一)

达梦数据库巡检常用SQL(一) 数据库基本信息 数据库用户信息 数据库对象检查 数据库基本信息 检查授权信息: SELECT /*+DMDB_CHECK_FLAG*/ LIC_VERSION AS "许可证版本" ,SERIES_NO AS "序列号" ,CHECK_CODE AS "校验码" …

TypeScript的接口 (Interfaces)讲解

把接口&#xff08;Interface&#xff09;想成一份“说明书”或“合同书”。说明书 比如电饭煲的说明书告诉你&#xff1a; 必须有“煮饭”按钮必须有“保温”功能颜色可以是白、黑、红 接口在 TypeScript 里干的就是同样的事&#xff1a;它规定一个对象“长什么样”。 interfa…

Python本源诗话(我DeepSeek)

物理折行新注释&#xff0c;直抒胸臆吾志名。 笔记模板由python脚本于2025-08-23 13:14:28创建&#xff0c;本篇笔记适合喜欢python和诗的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官网…

博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!

内容源自“图灵学术博研社”gongzhonghao学校简介圣地亚哥州立大学&#xff08;San Diego State University, SDSU&#xff09;是美国加州南部久负盛名的公立研究型大学。学校坐落于科技产业高度活跃的南加州地区&#xff0c;与本地软件、电信、生物科技、国防及清洁能源等领域…

Day22: Python涡轮增压计划:用C扩展榨干最后一丝性能!

目录&#x1f525; 第一章&#xff1a;初识外挂 - ctypes初体验1.1 C语言涡轮引擎1.2 Python调用秘籍⚡ 第二章&#xff1a;Cython核弹级加速2.1 给Python穿上防弹衣2.2 编译倒计时2.3 起飞测试&#x1f3ce;️ 第三章&#xff1a;终极速度对决3.1 赛前准备3.2 比赛结果&#x…

如何修复“DNS服务器未响应”错误

“DNS服务器未响应”是一种常见的网络错误&#xff0c;当设备无法与域名系统&#xff08;DNS&#xff09;服务器通信以将域名转换为IP地址时&#xff0c;就会出现这种错误。DNS服务器的作用是将域名转换为IP地址&#xff08;例如&#xff0c;将www.example.com转换为192.168.1.…

数据结构与算法-算法-三数之和

题目&#xff1a; 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09;15. 三数之和 - 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所…

ASCOMP PDF Conversa:高效精准的PDF转换工具

在日常工作和学习中&#xff0c;PDF文件因其格式稳定、兼容性强而被广泛使用。然而&#xff0c;PDF文件的编辑性较差&#xff0c;常常需要将其转换为可编辑的格式&#xff0c;如Word文档。ASCOMP PDF Conversa作为一款功能强大的PDF转换工具&#xff0c;能够将PDF文件转换成可编…

JAVA核心基础篇-集合

想要了解集合&#xff0c;首先要知道一个东西&#xff0c;叫数据结构。所谓数据结构&#xff0c;其实就是计算机存储&#xff0c;组织数据的方式。常用的数据结构有8大类数组&#xff0c;链表&#xff0c;树&#xff0c;堆&#xff0c;栈&#xff0c;队列&#xff0c;哈希表&am…

大模型——深度评测智能体平台Coze Studio

深度评测智能体平台Coze Studio 7 月底字节跳动的 Coze-Studio 正式开源,算是 AI 智能体领域的一个大事件。这个月终于有时间在内网环境进行了部署和评测,希望能为团队的企业知识库和 AI 应用建设提供多一个选项。 其实,我们厂的知识库系统一直是自研的。没有直接采用市面…

UE5打包,LoadObject加载不出网格|动画

由于笔者UE5加载模型和动画使用的动态加载&#xff08;LoadObject&#xff09;&#xff0c;而这些资源&#xff08;XX001、XX002 等&#xff09;没有被任何关卡或蓝图直接引用&#xff0c;在编辑器状态下是可以正常加载的&#xff0c;但它们在打包时被当作“无用”资源而排除了…

C 语言标准输入输出头文件stdio.h及其常见用法

在这篇文章中&#xff0c;我们来详细聊一聊 C 语言标准输入输出头文件 stdio.h 及其常见用法。1. stdio.h 是什么 stdio.h&#xff08;Standard Input and Output Header&#xff09;是 C 标准库中的一个头文件&#xff0c;提供了处理标准输入输出和一些文件操作的函数声明。 它…

Js逆向 拼夕夕anti_content

前言 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;本文章未经…

大模型时代为什么需要向量数据库?

这里写自定义目录标题1. 向量数据库2. 向量嵌入3. 特征和向量4. 相似性测量4.1 欧几里得距离4.2 余弦相似度5. 相似性搜索5.1 K-Means5.2 基于文本嵌入进行意图匹配6. 问答助手7. 意图匹配1. 向量数据库 向量数据库&#xff08;Vector Database&#xff09;&#xff0c;也叫矢…