【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

​​​​​​​

一、引言 

 pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks),共计覆盖32万个模型。

今天介绍Audio的第三篇,文本转音频(text-to-audio/text-to-speech),在huggingface库内共有1978个音频分类模型,其中1141个是由facebook生成的不同语言版本,其他公司发布的仅有837个。

二、文本转音频(text-to-audio/text-to-speech)

2.1 概述

文本转音频(TTS),与上一篇音频转文本(STT)是对称技术,给定文本生成语音,实际使用上,更多与语音克隆技术相结合:先通过一段音频(few-show)进行声音克隆,再基于克隆的音色和文本生成语音。应用场景极多,也是人工智能领域最易看到成果的技术,主要应用场景有读文章音乐生成、短视频智能配音、游戏角色智能配音等。

2.2 技术原理

2.2.1 原理概述

当前比较流行的做法还是基于transformer对文本编码与声音编码进行对齐,声音方面先产生一个对数梅尔频谱图,再使用一个额外的神经网络(声码器)转换为波形。

模型类别上,以suno/bark为代表的语音生成和以xtts为代表的声音克隆+语音生成各占据半壁江山,使用比较多的模型如下

2.2.2 语音生成(zero-shot)

  • suno/bark:suno出品,天花板,支持笑容、男女声设定、音乐设定等。支持pipeline
  • 2noise/ChatTTS:国产品牌,突破天花板。不支持pipeline,需要下载项目包
  • BytedanceSpeech/seed-tts-eval:字节出品。不支持pipeline,需要下载项目包

2.2.3 声音克隆+语音生成(few-shot)

  • coqui/XTTS-v2:酷趣青蛙,几秒的语音样本即可完成克隆。支持pipeline生成,但克隆需要使用pypi的TTS包
  • fishaudio/fish-speech-1.2:鱼语,国产,同样几秒的语音样本即可完成克隆。支持pipeline生成,但克隆需要下载项目。

2.3 pipeline参数

2.3.1 pipeline对象实例化参数​​​​​​​

( *args, vocoder = None, sampling_rate = None, **kwargs )

2.3.2 pipeline对象使用参数 ​​​​​​​

  • text_inputsstrList[str])——要生成的文本。
  • forward_paramsdict可选)— 传递给模型生成/转发方法的参数。forward_params始终传递给底层模型。
  • generate_kwargsdict可选generate_config)—用于生成调用的临时参数化字典。

2.3.3 pipeline对象返回参数

  • audionp.ndarray形状(nb_channels, audio_length))——生成的音频波形。
  • samples_rate (int) — 生成的音频波形的采样率。

2.4 pipeline实战

2.4.1 suno/bark-small(默认模型)

pipeline对于text-to-audio/text-to-speech的默认模型是suno/bark-small,使用pipeline时,如果仅设置task=text-to-audio或task=text-to-speech,不设置模型,则下载并使用默认模型。

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"import scipy
from IPython.display import Audio
from transformers import pipeline
pipe = pipeline("text-to-speech")
result = pipe("Hello, my dog is cooler than you!")
sampling_rate=result["sampling_rate"]
audio=result["audio"]
print(sampling_rate,audio)
scipy.io.wavfile.write("bark_out.wav", rate=sampling_rate, data=audio)
Audio(audio, rate=sampling_rate)

 可以将文本转换为语音bark_out.wav。

bark支持对笑声、男女、歌词、强调语气等进行设定,直接在文本添加:

  • [laughter]
  • [laughs]
  • [sighs]
  • [music]
  • [gasps]
  • [clears throat]
  • ...犹豫
  • 歌词
  • 大写以强调单词
  • [MAN][WOMAN]分别使 Bark 偏向男性和女性说话者

同时,pipeline可以指定任意的模型,模型列表参考TTS模型库。 

 2.4.2 coqui/XTTS-v2语音克隆

参考官方文档:可以使用python或命令行2种方式轻松使用model_list内的模型,优先要安装TTS的pypi包:

pip install TTS -i https://mirrors.cloud.tencent.com/pypi/simple

2.4.2.1 语音转换(参考语音,将语音生成语音)

python版本:

import torch
from TTS.api import TTS# Get device
device = "cuda" if torch.cuda.is_available() else "cpu"# List available 🐸TTS models
print(TTS().list_models())# Init TTS
tts = TTS(model_name="voice_conversion_models/multilingual/vctk/freevc24", progress_bar=False).to("cuda")
tts.voice_conversion_to_file(source_wav="my/source.wav", target_wav="my/target.wav", file_path="output.wav")

命令行版本:

tts --out_path ./speech.wav --model_name "tts_models/multilingual/multi-dataset/xtts_v2" --source_wav "./source_wav.wav" --target_wav "./target_wav.wav"

2.4.2.2 文字转语音(参考语音,将文字生成语音)

python版本:

import torch
from TTS.api import TTS# Get device
device = "cuda" if torch.cuda.is_available() else "cpu"# List available 🐸TTS models
print(TTS().list_models())# Init TTS
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)# Run TTS
# ❗ Since this model is multi-lingual voice cloning model, we must set the target speaker_wav and language
# Text to speech list of amplitude values as output
wav = tts.tts(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en")
# Text to speech to a file
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")tts = TTS("tts_models/de/thorsten/tacotron2-DDC")
tts.tts_with_vc_to_file("Wie sage ich auf Italienisch, dass ich dich liebe?",speaker_wav="target/speaker.wav",file_path="output.wav"
)

命令行版本:

$ tts --text "Text for TTS" --model_name "<model_type>/<language>/<dataset>/<model_name>" --target_wav <path/to/reference/wav> --out_path output/path/speech.wav

2.5 模型排名

在huggingface上,我们筛选自动语音识别模型,并按近期热度从高到低排序:

看起来有1978个,实际上有1141是由facebook生成的不同语言版本,其他公司发布的仅有837个:

三、总结

本文对transformers之pipeline的文本生成语音(text-to-audio/text-to-speech)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline以及tts的python和命令行工具完成文字生成语音、文字参考语音生成语音、语音参考语音生成语音,应用于有声小说、音乐创作、变音等非常广泛的场景。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)​​​​​​​

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)​​​​​​​

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)​​​​​​​

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

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

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

相关文章

挖矿宝藏之硬盘分区

目录 一、硬盘分区的相关知识 二、主分区、活动分区、扩展分区、逻辑盘和盘符 三、硬盘分区原因 1.减少硬盘空间的浪费 2.便于文件的分类管理 3.有利于病毒的防治 四、硬盘分区的原则 1.方便性 2.实用性 3.安全性 五、利用Diskpart进行分区 1.命令行工具Diskpart …

ARM体系结构和接口技术(五)封装RCC和GPIO库

文章目录 一、RCC&#xff08;一&#xff09;思路1. 找到时钟基地址2. 找到总线的地址偏移&#xff08;1&#xff09;AHB4总线&#xff08;2&#xff09;定义不同GPIO组的使能宏函数&#xff08;3&#xff09;APB1总线&#xff08;4&#xff09;定义使能宏函数 二、GPIO&#x…

捷配笔记-混合信号PCB布局设计的基本准则是什么?

混合信号PCB设计需要对模拟和数字电路有基本的了解&#xff0c;以最大限度地减少&#xff08;如果不能防止的话&#xff09;信号干扰。现代系统由数字域和模拟域均可操作的组件组成&#xff0c;这些组件必须经过精心设计&#xff0c;以确保整个系统的信号完整性。 在混合信号系…

MySQL学习记录 —— 이십이 MySQL服务器文件系统(2)

文章目录 1、日志文件的整体简介2、一般、慢查询日志1、一般查询日志2、慢查询日志FILE格式TABLE格式 3、错误日志4、二进制日志5、日志维护 1、日志文件的整体简介 中继服务器的数据来源于集群中的主服务。每次做一些操作时&#xff0c;把操作保存到重做日志&#xff0c;这样崩…

vscode+wsl2+anaconda环境的配置与使用

目录 下载anaconda Anaconda使用参考 vscodeubuntuanaconda 先用vscode连接本地ubuntu。 如果没有安装wsl2与ubuntu&#xff0c;可点击下面的链接。 问题&#xff1a;wsl install 无法解析服务器 成功记录&#xff1a; 在vscode终端用ubuntu安装anaconda。 创建pytho…

Spring如何管理Mapper

目录 一、背景二、猜测三、源码查看步骤1、创建MapperScannerConfigurer.java2、MapperScan注解3、MapperScannerRegistrar执行registerBeanDefinitions方法4、MapperScannerConfigurer执行postProcessBeanDefinitionRegistry方法5、执行doscan6、设置beanClass7、使用jdk生成代…

万界星空科技电线电缆MES系统实现线缆全流程追溯

MES系统通过高度集成的数据平台&#xff0c;对电线电缆的生产全过程进行实时监控与记录&#xff0c;从原材料入库开始&#xff0c;到生产过程中的各个关键控制点&#xff0c;再到成品出库&#xff0c;每一步操作都被详细记录并可追溯。这种全流程追溯能力主要体现在以下几个方面…

在组件中显示tuku的照片

一、问题 &#xff08;1&#xff09;错误&#xff1a;域名前面一定要加http://要不然会报错 &#xff08;2&#xff09;在使用 defineModel传值时一定要动态绑定&#xff0c;要不然图片不显示 &#xff08;3&#xff09;改完后在商品列表中显示图片信息必须 在显示的图片中取…

Linux入门笔记(指令)

操作系统是什么&#xff1f; 操作系统是一款做软硬件管理的软件。计算机系统自下而上可以大致分为4部分&#xff1a;硬件、操作系统、应用程序和用户。操作系统管理各种计算机硬件&#xff0c;为应用程序提供基础&#xff0c;并且充当计算机硬件与用户之间的中介。重点&#x…

Mybatis——生命周期和作用域

理解不同作用域和生命周期类别是至关重要的&#xff0c;因为错误的使用会导致非常严重的并发问题。 SqlSessionFactoryBuilder&#xff1a; 一旦创建了 SqlSessionFactory&#xff0c;就不再需要它了。 局部方法变量 SqlSessionFactory&#xff1a; 可以想象为&…

力扣145题:二叉树的后序遍历

给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root [1] 输出…

C++复习的长文指南

C复习的长文指南 一、入门语法知识1.预备1.1 main函数1.2 注释1.3 变量1.3 常量1.4 关键字1.5 标识符明明规则 2. 数据类型2.1 整型2.1.1 sizeof关键字 2.2 实型&#xff08;浮点型&#xff09;2.3 字符型2.4 转义字符2.5 字符串型2.6 布尔类型bool2.7 数据的输入 3. 运算符3.1…

SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼

概览 用 SwiftUI 框架开发过应用的小伙伴们都知道&#xff0c;SwiftUI 中的视图由各种属性和绑定“扑朔迷离”的缠绕在一起&#xff0c;自成体系。 想要在 Xcode 预览中泰然处之的调试 SwiftUI 视图有时并不是件容易的事。其中&#xff0c;最让人秃头码农们头疼的恐怕就要数如…

对redis进行深入学习

目录 1. 什么是redis&#xff1f;1.1 为什么使用redis作为缓存&#xff1f;1.1.0 数据库&#xff08;MySQL&#xff09;与 redis1. 存储介质不同&#xff08;408选手应该都懂hh&#xff09;2. 数据结构优化3. I/O模型差异4. CPU缓存友好性5. 单线程与多线程差异6. 持久化与缓存…

进程的地址空间

一、写个代码见一见地址空间 1、问题 在代码中我们在第五秒时会在子进程中改变全局变量 g_val 但是我们发现了一个奇怪的现象&#xff1a;在子进程中改变 g_val &#xff0c;由于进程的独立性&#xff0c;所以子进程和父进程的值不一样是可以理解的&#xff0c;但是为什么变量…

【C++11】线程

本篇文章更多的是熟悉一下C11的线程库接口&#xff0c;与linux的相关线程接口是非常相似的&#xff0c;更多的是将面向过程改为了面向对象。 并没有一些概念的讲解。 想知道线程的相关概念的可以看一看这篇文章及后续 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和…

访问控制系列

目录 一、基本概念 1.客体与主体 2.引用监控器与引用验证机制 3.安全策略与安全模型 4.安全内核 5.可信计算基 二、访问矩阵 三、访问控制策略 1.主体属性 2.客体属性 3.授权者组成 4.访问控制粒度 5.主体、客体状态 6.历史记录和上下文环境 7.数据内容 8.决策…

memcached 高性能内存对象缓存

memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统&#xff0c;常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时&#xff0c;通常要去数据库调用数据&#xff0c;但…

【快速逆向一/无过程/有源码】《大学》在线投稿系统

逆向日期&#xff1a;2024.07.18 使用工具&#xff1a;Node.js 加密工具&#xff1a;Crypto-js标准库 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 【点赞 收藏 关注 】仅供学习&#xff0c;仅供学习&#xff0c; 本文为快速逆向&#x…

如果制作红星照耀中国思维导图?6个软件帮助你快速制作思维导图

如果制作红星照耀中国思维导图&#xff1f;6个软件帮助你快速制作思维导图 制作《红星照耀中国》思维导图可以帮助更好地理解和梳理书中的重要信息和内容。以下是六款推荐的思维导图软件及其特点和使用方法&#xff0c;帮助你快速制作高质量的思维导图。 迅捷画图 特点与功…