【人工智能】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.rhkb.cn/news/389389.html

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

相关文章

查找算法:线性查找,golang实现

目录 前言 线性查找 代码示例 1. 算法包 2. 线性查找代码 3. 模拟程序 4. 运行程序 循环次数 假如目标值正好在数组中的第一位 假如目标值正好在数组中的第五位 假如目标值正好在数组中的最后一位 假如目标值不在数组中 线性查找的思想 1. 顺序遍历 2. 比较 3.…

计算机毕业设计选题推荐-课程教学辅助系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

金牌挑战——奥运知识大比拼

巴黎奥运会乒乓球项目1日结束男、女单打四分之一决赛。在四分之一决赛中&#xff0c;上演惊天逆转&#xff0c;在大比分0:2、2:3落后的逆势下力挽狂澜&#xff0c;4:3艰难战胜对手&#xff0c;进入四强。祝贺&#xff01; 为此&#xff0c;我立马出了一个知识竞赛&#xff0c;…

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区3.4、查看系统版本、内…

正则表达式与文本处理

目录 一、正则表达式 1、正则表达式定义 1.1正则表达式的概念及作用 1.2、正则表达式的工具 1.3、正则表达式的组成 2、基础正则表达式 3、扩展正则表达式 4、元字符操作 4.1、查找特定字符 4.2、利用中括号“[]”来查找集合字符 4.3、查找行首“^”与行尾字符“$”…

[C++探索]初始化列表,static成员,友元函数,内部类,匿名对象

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到C探索系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站…

二百五十二、OceanBase——Linux上安装OceanBase数据库(二):新用户配置ssh免密登录

一、目的 在OBD页面上部署OceanBase数据库时发现&#xff0c;需要把新用户也要配置ssh免密登录 二、前提 root用户已经设置免密登录 三、配置步骤 1 切换到新用户obadmin [roothurys23 ~]# su obadmin 2 执行命令生成秘钥文件 [obadminhurys23 oceanbase]$ ssh-keygen …

SSH实现电脑VScode免密登录到虚拟机其原理

在网上想看一下这个原理。发现写的还是比较乱&#xff0c;所以自己总结了一份方便回顾 SSH免密登录的原理主要基于非对称密钥加密技术&#xff0c;比较常用的是RSA算法。 以下是SSH免密登录的详细步骤和原理&#xff1a; 1. 生成密钥对 在客户端上生成一对密钥&#xff0c;…

初识Docker及管理Docker

Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术&#xff1a;Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器&#xff08;阿里系&#xff09;搜索镜像获取镜像查看镜像信息…

【综合案例】使用DevEco Studio编写B站视频卡片

效果展示 知识点 层叠布局 介绍&#xff1a;层叠布局具有较强的 组件层叠 能力。 使用场景&#xff1a;卡片层叠效果 特点&#xff1a;层叠操作 更简洁&#xff0c;编码效率更高。【绝对定位的优势是更灵活】 Stack容器内的子元素顺序是先写的在最下面&#xff0c;即从下到上依…

Linux服务器CPU使用率或CPU负载较高问题的排查及解决方案

本文主要介绍当Linux系统ECS实例CPU使用率或CPU负载较高时&#xff0c;如何排查分析及常见案例说明。 操作场景 在您使用ECS实例过程中&#xff0c;可能会遇到实例CPU使用率或CPU负载持续较高的情况&#xff0c;您可以按照以下步骤排查定位具体问题。 找到影响CPU使用率或CPU…

每日期刊分享

检索:知网 G4 刊期:现收25年3-4月刊版面&#xff0c;预计25年4-5月出刊: 收稿范围:收小学到高中的教育教学稿件

react高级组件ProForm实现输入框搜索

实现界面 <Col span{12}><ProForm.Itemname"name"label"推荐用户"><AutoCompleteclassName"pro-field pro-field-md"placeholder"请输入用户名"options{NameArr}onSearch{debounce(searchUser, 500)}onSelect{onSelect…

MATLAB(9)GIS模型

一、介绍 在GIS&#xff08;地理信息系统&#xff09;中&#xff0c;模型的实现可以非常多样化&#xff0c;取决于你想要解决的具体问题。MATLAB作为一个强大的数值计算和可视化工具&#xff0c;可以被用来开发GIS相关的模型&#xff0c;尽管它不是专门为GIS设计的&#xff08…

jeecguniapp上传附件/图片及预览

一、上传图片 具体页面显示是 注意事项是传递除文件外的参数需要包在formData里 formData:{UUID:that.state.id,type:bill,}, 二、预览图片及附件 重点是附件预览图片预览即图片更换图片path显示 pdf预览代码 同事写的给的笔记及注意事项

亚马逊自养买家账号的优点和测评优势

很多人可能会认为&#xff0c;自行培育买家账号&#xff08;即自养号&#xff09;的成本相对较高&#xff0c;如果仅仅用于产品测评&#xff0c;可能会觉得性价比不高。然而&#xff0c;买家账号在电商运营中其实拥有多重重要作用&#xff0c;远不止于简单的测评功能。 那么&am…

文案人的梦工场,网易入职指南!

网易云对于咱们一些有点文艺的文案策划来说&#xff0c;简直就是梦中情司。 在这里工作锻炼机会很多&#xff0c;也很开拓眼界&#xff0c;能获得相当于在别处3倍能力的成长速度&#xff0c;福利待遇也是很好的。 要进入网易云音乐做文案策划&#xff0c;你可以按照以下步骤进…

qiankun 微前端 隔离子应用样式,解决 ant-design-vue 子应用样式污染问题(已落地)

样式冲突产生原因 先分析乾坤qiankun 构建之后&#xff0c;会根据你的配置 给每个子应用生成一个id&#xff0c; 当加载到对应子应用的时候&#xff0c;就把内容放到对应的id 标签里去&#xff0c; 这样能有效的隔离 js 代码&#xff0c;但是样式是加载在全局的 所以 当两个子…

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…

大模型之技术概述

本文作为大模型综述第一篇&#xff0c;介绍大模型技术基本情况。 目录&#xff1a; 1.大模型技术的发展历程 2.大模型技术的生态发展 3.大模型技术的风险与挑战 1.大模型技术的发展历程 2006 年 Geoffrey Hinton 提出通过逐层无监督预训练的方式来缓解由于梯度消失而导致的…