当前位置: 代码网 > it编程>前端脚本>Python > 【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

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

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

​​​​​​​

一、引言 

 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)

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

2.3 pipeline参数

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

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

2.3.3 pipeline对象返回参数

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支持对笑声、男女、歌词、强调语气等进行设定,直接在文本添加:

同时,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)

(0)

相关文章:

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

发表评论

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