/ Модель

Характеристики

Контекст
40 960 токенов
Параметры
575 млн
Лицензия
Apache 2.0
Архитектура
qwen3 · dense
Опубликована
12 июн 2026

Vyvo-Multilingual-v0.1

Генерация текстаТекст → текст3 профессии

Модель синтезирует английскую и японскую речь целевым текстом, воспроизводя голос по короткому аудиореференсу.

20скачиваний за 30 дней4лайкавеса обновлены12 июн 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Vyvo-Multilingual-v0.1 — многоязычная модель синтеза речи с клонированием голоса. Она принимает короткий образец голоса и целевой текст, а затем произносит текст голосом из образца. В качестве языковой основы используется Qwen3-0.6B; аудио представляется кодеком kyutai/mimi с 32 кодовыми книгами и частотой 24 кГц. Объём модели — 574,8 млн параметров, контекст — до 40 960 токенов.

Модель предназначена для синтеза речи на английском и японском языках и переноса характеристик голоса по референсному аудиоклипу. Метаданные также указывают поддержку генерации текста. Репозиторий содержит веса в формате safetensors. Лицензия — Apache-2.0.

Сценарии применения

  • синтез английской речи с заданным голосом
  • синтез японской речи с заданным голосом
  • клонирование голоса по короткому аудиоклипу
  • озвучивание текста голосом из референсной записи

Ограничения

Для лучших результатов рекомендуется передавать короткий референсный аудиоклип. В карточке описана поддержка английского и японского языков.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Vyvo-Multilingual-v0.1

Multilingual (English + Japanese) voice-cloning TTS. Give a short reference clip and a target text; the model speaks the text in the reference voice.

  • Backbone: Qwen3-0.6B
  • Audio codec: kyutai/mimi (32 codebooks, 24 kHz)
  • Use a reference clip for best results.

Usage

import soundfile as sf
import torch
import torchaudio
from transformers import (AutoModelForCausalLM, AutoTokenizer,
                          AutoFeatureExtractor, MimiModel)

REPO = "Vyvo/Vyvo-Multilingual-v0.1"
DEVICE = "cuda"

# Token layout (must match training)
BASE = 151669                            # Qwen3 base vocab; audio ids start above it
NUM_CODEBOOKS = 32
CODEBOOK_SIZE = 2048
AUDIO_OFFSET = 10
SOS, EOS, SOH, EOH, SOA = 1, 2, 3, 4, 5  # special tokens, as offsets above BASE

# Load the model, tokenizer, and the Mimi codec
tokenizer = AutoTokenizer.from_pretrained(REPO)
model = AutoModelForCausalLM.from_pretrained(REPO, dtype=torch.bfloat16).to(DEVICE).eval()
mimi = MimiModel.from_pretrained("kyutai/mimi").to(DEVICE).eval()
feature_extractor = AutoFeatureExtractor.from_pretrained("kyutai/mimi")


def encode_reference(path):
    # Load a wav and encode it to Mimi audio tokens (as LM token ids).
    wav, sr = sf.read(path, dtype="float32", always_2d=False)
    if wav.ndim > 1:
        wav = wav.mean(axis=1)
    target_sr = feature_extractor.sampling_rate
    if sr != target_sr:
        wav = torchaudio.functional.resample(
            torch.from_numpy(wav).unsqueeze(0), sr, target_sr).squeeze(0).numpy()

    inputs = feature_extractor(raw_audio=wav, sampling_rate=target_sr, return_tensors="pt")
    codes = mimi.encode(inputs["input_values"].to(DEVICE),
                        num_quantizers=NUM_CODEBOOKS).audio_codes[0].cpu()  # (codebooks, frames)

    frame_interleaved = codes.transpose(0, 1).reshape(-1).tolist()
    return [code + AUDIO_OFFSET + (i % NUM_CODEBOOKS) * CODEBOOK_SIZE + BASE
            for i, code in enumerate(frame_interleaved)]


def build_prompt(reference_tokens, reference_text, target_text):
    # [SOH] ref_text + target_text [eot] [EOH] [SOA] [SOS] <reference audio>
    text_ids = tokenizer(reference_text + " " + target_text,
                         add_special_tokens=False).input_ids
    head = [BASE + SOH] + text_ids + [tokenizer.eos_token_id,
                                      BASE + EOH, BASE + SOA, BASE + SOS]
    return head + reference_tokens


def decode_audio(generated_ids):
    # Turn generated LM token ids back into a waveform; stop at first invalid.
    codes = []
    for i, token in enumerate(generated_ids):
        value = token - BASE - AUDIO_OFFSET - (i % NUM_CODEBOOKS) * CODEBOOK_SIZE
        if 0 <= value < CODEBOOK_SIZE:
            codes.append(value)
        else:
            break

    frames = len(codes) // NUM_CODEBOOKS
    codes = torch.tensor(codes[:frames * NUM_CODEBOOKS]).view(frames, NUM_CODEBOOKS)
    codes = codes.t().unsqueeze(0).to(DEVICE)               # (1, codebooks, frames)
    return mimi.decode(codes).audio_values.squeeze().cpu().float().numpy()


# --- Voice cloning ---
reference_wav = "reference.wav"
reference_text = "text spoken in the reference clip"
target_text = "Hello, this is a test of the text to speech model."

prompt = build_prompt(encode_reference(reference_wav), reference_text, target_text)
input_ids = torch.tensor([prompt], device=DEVICE)

output = model.generate(
    input_ids,
    attention_mask=torch.ones_like(input_ids),
    max_new_tokens=9600,
    min_new_tokens=960,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.1,
    eos_token_id=BASE + EOS,
    pad_token_id=tokenizer.eos_token_id,
)

audio = decode_audio(output[0, input_ids.shape[1]:].tolist())
sf.write("output.wav", audio, mimi.config.sampling_rate)

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
Qwen3ForCausalLM
Ревизия весов
3b63699

0 моделей