Технология текста в речь (TTS) в последние годы резко развивалась от роботизированных голосов до синтеза речи. Кора-это впечатляющая модель TTS с открытым исходным кодом, разработанную SUNO, которая может генерировать удивительно человеческую речь на нескольких языках, в комплекте с невербальными звуками, похожими на смех, вздох и плачущий.
В этом уроке мы внедрим кору, используя библиотеку Transformers Huging Face в среде Google Colab. К концу вы сможете:
- Настроить и запустить кору в Колаба
- Генерировать речь от ввода текста
- Экспериментируйте с разными голосами и стилями разговоров
- Создать практические приложения TTS
Кора увлекательна, потому что это полностью генеративная модель текста к Аудио, которая может создавать естественную звучащую речь, музыку, фоновый шум и простые звуковые эффекты. В отличие от многих других систем TTS, которые полагаются на обширную предварительную обработку аудио и клонирование голоса, Bark может генерировать разнообразные голоса без тренировок, специфичных для динамиков.
Начнем!
Шаги внедрения
Шаг 1: Настройка среды
Во -первых, нам нужно установить необходимые библиотеки. Кора требует библиотеки трансформаторов от обнимающегося лица, а также несколько других зависимостей:
# Install the required libraries
!pip install transformers==4.31.0
!pip install accelerate
!pip install scipy
!pip install torch
!pip install torchaudio
Далее мы импортируем библиотеки, которые мы будем использовать:
import torch
import numpy as np
import IPython.display as ipd
from transformers import BarkModel, BarkProcessor
# Check if GPU is available
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")
Шаг 2: Загрузка модели коры
Теперь давайте загрузим модель и процессор коры от обнимающего лица:
# Load the model and processor
model = BarkModel.from_pretrained("suno/bark")
processor = BarkProcessor.from_pretrained("suno/bark")
# Move model to GPU if available
model = model.to(device)
Кора является относительно большой моделью, поэтому этот шаг может занять минуту или две, чтобы завершить, как он загружает веса модели.
Шаг 3: генерирование базовой речи
Начнем с простого примера для создания речи из текста:
# Define text input
text = "Hello! My name is BARK. I'm an AI text to speech model. It's nice to meet you!"
# Preprocess text
inputs = processor(text, return_tensors="pt").to(device)
# Generate speech
speech_output = model.generate(**inputs)
# Convert to audio
sampling_rate = model.generation_config.sample_rate
audio_array = speech_output.cpu().numpy().squeeze()
# Play the audio
ipd.display(ipd.Audio(audio_array, rate=sampling_rate))
# Save the audio file
from scipy.io.wavfile import write
write("basic_speech.wav", sampling_rate, audio_array)
print("Audio saved to basic_speech.wav")
Вывод: чтобы прослушать звук, любезно обратитесь к записной книжке (пожалуйста, найдите прикрепленную ссылку в конце
Шаг 4: Использование разных пресетов динамиков
Кора поставляется с несколькими предопределенными пресетами оратора на разных языках. Давайте рассмотрим, как их использовать:
# List available English speaker presets
english_speakers = (
"v2/en_speaker_0",
"v2/en_speaker_1",
"v2/en_speaker_2",
"v2/en_speaker_3",
"v2/en_speaker_4",
"v2/en_speaker_5",
"v2/en_speaker_6",
"v2/en_speaker_7",
"v2/en_speaker_8",
"v2/en_speaker_9"
)
# Choose a speaker preset
speaker = english_speakers(3) # Using the fourth English speaker preset
# Define text input
text = "BARK can generate speech in different voices. This is an example of a different speaker preset."
# Add speaker preset to the input
inputs = processor(text, return_tensors="pt", voice_preset=speaker).to(device)
# Generate speech
speech_output = model.generate(**inputs)
# Convert to audio
audio_array = speech_output.cpu().numpy().squeeze()
# Play the audio
ipd.display(ipd.Audio(audio_array, rate=sampling_rate))
Шаг 5: генерирование многоязычной речи
Кора поддерживает несколько языков из коробки. Давайте генерируем речь на разных языках:
# Define texts in different languages
texts = {
"English": "Hello, how are you doing today?",
"Spanish": "¡Hola! ¿Cómo estás hoy?",
"French": "Bonjour! Comment allez-vous aujourd'hui?",
"German": "Hallo! Wie geht es Ihnen heute?",
"Chinese": "你好!今天你好吗?",
"Japanese": "こんにちは!今日の調子はどうですか?"
}
# Generate speech for each language
for language, text in texts.items():
print(f"\nGenerating speech in {language}...")
# Choose appropriate voice preset if available
voice_preset = None
if language == "English":
voice_preset = "v2/en_speaker_1"
elif language == "Spanish":
voice_preset = "v2/es_speaker_1"
elif language == "German":
voice_preset = "v2/de_speaker_1"
elif language == "French":
voice_preset = "v2/fr_speaker_1"
elif language == "Chinese":
voice_preset = "v2/zh_speaker_1"
elif language == "Japanese":
voice_preset = "v2/ja_speaker_1"
# Process text with language-specific voice preset if available
if voice_preset:
inputs = processor(text, return_tensors="pt", voice_preset=voice_preset).to(device)
else:
inputs = processor(text, return_tensors="pt").to(device)
# Generate speech
speech_output = model.generate(**inputs)
# Convert to audio
audio_array = speech_output.cpu().numpy().squeeze()
# Play the audio
ipd.display(ipd.Audio(audio_array, rate=sampling_rate))
write("basic_speech_multilingual.wav", sampling_rate, audio_array)
print("Audio saved to basic_speech_multilingual.wav")
Шаг 6: Создание практического приложения – Аудиокниг Генератор
Давайте создадим простой генератор аудиокниги, который может преобразовать абзацы текста в речь:
def generate_audiobook(text, speaker_preset="v2/en_speaker_2", chunk_size=250):
"""
Generate an audiobook from a long text by splitting it into chunks
and processing each chunk separately.
Args:
text (str): The text to convert to speech
speaker_preset (str): The speaker preset to use
chunk_size (int): Maximum number of characters per chunk
Returns:
numpy.ndarray: The generated audio as a numpy array
"""
# Split text into sentences
import re
sentences = re.split(r'(?<=(.!?))\s+', text)
chunks = ()
current_chunk = ""
# Group sentences into chunks
for sentence in sentences:
if len(current_chunk) + len(sentence) < chunk_size:
current_chunk += sentence + " "
else:
chunks.append(current_chunk.strip())
current_chunk = sentence + " "
# Add the last chunk if it's not empty
if current_chunk:
chunks.append(current_chunk.strip())
print(f"Split text into {len(chunks)} chunks")
# Process each chunk
audio_arrays = ()
for i, chunk in enumerate(chunks):
print(f"Processing chunk {i+1}/{len(chunks)}")
# Process text
inputs = processor(chunk, return_tensors="pt", voice_preset=speaker_preset).to(device)
# Generate speech
speech_output = model.generate(**inputs)
# Convert to audio
audio_array = speech_output.cpu().numpy().squeeze()
audio_arrays.append(audio_array)
# Concatenate audio arrays
import numpy as np
full_audio = np.concatenate(audio_arrays)
return full_audio
# Example usage with a short excerpt from a book
book_excerpt = """
Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do. Once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, "and what is the use of a book," thought Alice, "without pictures or conversations?"
So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.
"""
# Generate audiobook
audiobook = generate_audiobook(book_excerpt)
# Play the audio
ipd.display(ipd.Audio(audiobook, rate=sampling_rate))
# Save the audio file
write("alice_audiobook.wav", sampling_rate, audiobook)
print("Audiobook saved to alice_audiobook.wav")
В этом уроке мы успешно внедрили модель «Кора» текста в речь, используя библиотеку Transformers в Google Colab. В этом уроке мы научились:
- Установите и загрузите модель коры в среде Colab
- Генерировать основную речь от ввода текста
- Используйте разные пресеты динамиков для разнообразия
- Создать многоязычную речь
- Создайте практическое приложение генератора аудиокниги
Барк представляет собой впечатляющий прогресс в технологии текста в речь, предлагая высококачественную, выразительную речевую генерацию без необходимости обширного обучения или точной настройки.
Будущие эксперименты, которые вы можете попробовать
Некоторые потенциальные следующие шаги для дальнейшего изучения и расширения вашей работы с корой:
- Голосовой клонинг: Экспериментируйте с методами клонирования голоса, чтобы генерировать речь, которая имитирует конкретные ораторы.
- Интеграция с другими системами: Объедините кору с другими моделями ИИ, такими как языковые модели для персонализированных голосовых помощников в динамике, таких как рестораны и прием, генерация контента, системы перевода и т. Д.
- Веб -приложение: Создайте веб -интерфейс для вашей системы TTS, чтобы сделать его более доступным.
- Пользовательская точная настройка: Исследуйте методы для тонкой настройки коры в определенных областях или стилях выступлений.
- Оптимизация производительности: Исследовать методы оптимизации скорости вывода для приложений в реальном времени. Это станет важным аспектом для любого приложения в производстве, поскольку время вывода для обработки даже небольшого количества текста, эти гигантские модели занимают значительное время благодаря своему обобщению для огромного количества вариантов использования.
- Оценка качества: Реализуйте объективные и субъективные показатели оценки для оценки качества генерируемой речи.
Поле текста в речь быстро развивается, и такие проекты, как кора, раздвигают границы того, что возможно. Продолжая изучать эту технологию, вы обнаружите еще более захватывающие приложения и улучшения.
Вот Колаб ноутбукПолем Кроме того, не забудьте следовать за нами Twitter и присоединиться к нашему Телеграмма канал и LinkedIn GrукПолем Не забудьте присоединиться к нашему 80K+ ML SubredditПолем
🚨 Познакомьтесь с «Партаном»: разговорная структура ИИ, на первом месте LLM, предназначенную для того, чтобы предоставить разработчикам контроль и точность, которые им нужны, по сравнению с их агентами по обслуживанию клиентов AI, используя поведенческие руководящие принципы и надзор за время выполнения. 🔧 🎛 Он работает с использованием простого в использовании CLI 📟 и нативных SDK клиента в Python и TypeScript 📦.

Асджад - стажер консультант в Marktechpost. Он убеждает B.Tech в области машиностроения в Индийском технологическом институте, Харагпур. Asjad - это машинное обучение и энтузиаст глубокого обучения, который всегда исследует применение машинного обучения в здравоохранении.
Парган: строите надежные агенты, обращенные к клиенту AI с LLMS 💬 ✅ (повышен)