BARK AI部署在Colaboratory,并输出长语音

BARK AI部署在Colaboratory,并输出长语音

准备工作

  • 依次点击修改–>笔记本设置->选择硬件加速器为 T4 GPU(不然跑模型会很慢)

在这里插入图片描述

在这里插入图片描述

程序示例

输出短语音(最长14S)

  • 点击插入代码单元格

在这里插入图片描述

!pip install git+https://github.com/suno-ai/bark.git 
# 从GitHub上获取Bark模型的源代码,并在Python环境中安装Bark文本转音频模型,使你可以在Python中使用Bark进行文本到音频的转换。
from bark import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
from IPython.display import Audio

# download and load all models

preload_models()

# generate audio from text

text_prompt = """
# 在这里输入想转换为音频的文字
"""
audio_array = generate_audio(text_prompt)

# save audio to disk

write_wav("bark_generation.wav", SAMPLE_RATE, audio_array)

# play text in notebook

Audio(audio_array, rate=SAMPLE_RATE)
代码解释

这段代码使用Bark库来生成音频,然后保存为.wav文件,并在IPython环境中播放生成的音频。

  1. 导入必要的库和模块:

    • from bark import SAMPLE_RATE, generate_audio, preload_models: 导入了Bark库中的一些函数和常量。
    • from scipy.io.wavfile import write as write_wav: 导入了SciPy库中的写.wav文件的函数。
    • from IPython.display import Audio: 导入了IPython中用于播放音频的函数。
  2. 加载Bark模型:

    • preload_models(): 这个函数从Bark库中下载并加载所有必需的模型,以便后续生成音频。
  3. 定义文本内容:

    • text_prompt = """ ... """: 这里定义了一个多行文本,作为输入用于生成音频。
  4. 生成音频:

    • audio_array = generate_audio(text_prompt): 使用Bark库中的generate_audio函数将文本转换为音频数据。
  5. 保存音频到文件:

    • write_wav("bark_generation.wav", SAMPLE_RATE, audio_array): 将生成的音频数据保存为一个.wav文件,文件名为"bark_generation.wav"。
  6. 在IPython环境中播放音频:

    • Audio(audio_array, rate=SAMPLE_RATE): 使用IPython的Audio函数将生成的音频以指定的采样率(SAMPLE_RATE)播放在Notebook中。

输出长语音(突破14S的限制)

import nltk
nltk.download('punkt')
# 可以在Python中使用NLTK提供的自然语言处理功能。
# 下载了NLTK库中的"Punkt"模型。Punkt是NLTK中的一个句子分割器(sentence tokenizer),用于将文本分割成句子。在自然语言处理任务中,句子分割通常是第一步,因为它将文本分成句子可以更容易地进行其他处理,比如词语分割和语法分析。
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0" 
from IPython.display import Audio
import nltk  # we'll use this to split into sentences
import numpy as np
from bark.generation import (
    generate_text_semantic,
    preload_models,
)
from bark.api import semantic_to_waveform
from bark import generate_audio, SAMPLE_RATE
preload_models()
script = """
# 在这里输入想转换为音频的文字
""".replace("\n", " ").strip()
sentences = nltk.sent_tokenize(script)
SPEAKER = "v2/en_speaker_6"
silence = np.zeros(int(0.25 * SAMPLE_RATE))  # quarter second of silence
pieces = []
for sentence in sentences:
    audio_array = generate_audio(sentence, history_prompt=SPEAKER)
    pieces += [audio_array, silence.copy()]
Audio(np.concatenate(pieces), rate=SAMPLE_RATE)

代码解释

这段代码执行以下操作:

  1. 设置CUDA可见设备: os.environ["CUDA_VISIBLE_DEVICES"] = "0" 这一行代码设置了CUDA的可见设备,通常用于配置在使用GPU加速的深度学习任务中哪个GPU设备被使用。

  2. 导入必要的库: from IPython.display import Audio 用于在IPython环境中播放音频;import nltk 用于分割文本为句子;import numpy as np 用于处理数组;from bark.generation import generate_text_semantic, preload_modelsfrom bark.api import semantic_to_waveform 用于调用Bark文本到音频生成的函数。

  3. 预加载Bark模型: preload_models() 这个函数用于预加载Bark文本到音频生成所需的模型,提前加载模型可以加快后续音频生成的速度。

  4. 定义文本脚本: script = """ ... """ 这里定义了一个文本脚本。文本被分割成句子,每个句子用于后续的音频生成。

  5. 将文本分割成句子: sentences = nltk.sent_tokenize(script) 使用NLTK库将文本脚本分割成句子,这样每个句子都可以被单独处理。

  6. 定义生成音频的参数: SPEAKER = "v2/en_speaker_6" 定义了生成音频时使用的说话者(speaker)。

  7. 生成音频并创建音频播放对象:for循环中,对每个句子执行generate_audio(sentence, history_prompt=SPEAKER)函数,该函数生成给定文本句子的音频,并将音频与静音间隔组合到pieces数组中。最后,np.concatenate(pieces) 将所有音频片段连接起来,Audio(np.concatenate(pieces), rate=SAMPLE_RATE) 创建了一个可以在IPython环境中播放的音频对象。

这段代码的目的是将给定的文本脚本转换为音频,并在IPython环境中播放生成的音频。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YRr YRr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值