OmniSinger
пение по тексту с нотами и длительностями
OmniSinger — файнтюн чекпоинта OmniVoice на 0,61 млрд параметров, который генерирует пение из текста. Модель получает короткий референсный аудиофрагмент и строку текста с разметкой высоты ноты и длительности для каждого слова, после чего поёт эту строку голосом из референса. Поддерживаются английский и вьетнамский языки.
🎶 Ключевые особенности
- 🎤 Управление нотной разметкой: каждое слово получает тег
{pitch:duration}, где pitch — номер MIDI-ноты, а duration — длина в сантисекундах. - ⏸ Паузы задаются тегом
<silence>{0:D}, а префикс[singing]включает режим пения. - 🎵 Поддержка мелизмов: одно слово можно растянуть на несколько нот через пары
pitch:durationчерез запятую. - 🗣 Голос берётся из референсного клипа; если не передать
ref_text, транскрипт пол��чит Whisper ASR. - 🔊 На выходе — моно-аудио 24 кГц в виде списка NumPy-массивов.
💻 Пример
import torch
from omnivoice import OmniVoice
model = OmniVoice.from_pretrained("mindvu/OmniSinger", device_map="cuda:0", dtype=torch.float16)
text = "[singing] hold{68:144} me{67:33} close{65:73}"
audio = model.generate(text=text, ref_audio="reference.mp3", duration=2.50)
Подробнее
Размер модели — 0,61 млрд параметров; языки — английский и вьетнамский.Референсный клип лучше брать чистый, с одним исполнителем, длиной от нескольких секунд до ~15 секунд.
Каждому слову нужен тег
{pitch:duration}, иначе тайминг собьётся; длинные песни лучше генерировать по фразам.Без
[singing] и тегов модель может работать как обычный OmniVoice для речи.







Комментарии