Replikimi i zërit

Replikimi i zërit ju lejon të replikoni karakteristikat vokale të një folësi nga një mostër e shkurtër audio duke përdorur pikën fundore të Gemini API Voices ( POST /v1beta/voices ). Si Gemini 3.8 Flash TTS ( gemini-3.8-flash-tts ) ashtu edhe Gemini 3.8 Flash-Lite TTS ( gemini-3.8-flash-lite-tts ) mbështesin replikimin e zërit.

Mënyra më e shpejtë për të replikuar, verifikuar pëlqimin dhe për të dëgjuar një zë të replikuar është me përvojën interaktive të Replikimit të ZëritGoogle AI Studio . Ju mund të regjistroni ose ngarkoni klipe referimi dhe pëlqimi direkt në shfletues, të shikoni paraprakisht zërin dhe të kopjoni ID-në voice_... që rezulton direkt në kodin e aplikacionit tuaj.

Fluksi i punës për replikimin e zërit

Modalitetet e ruajtjes me gjendje kundrejt atyre pa gjendje

Replikimi i zërit mbështet dy mënyra ruajtjeje kur thirret voices.create ( POST /v1beta/voices ), me ruajtjen stateful të aktivizuar si parazgjedhje:

  • Ruajtje me gjendje të plotë ( store=True , parazgjedhja e rekomanduar): Google ruan profilin tuaj të verifikuar të zërit në projektin tuaj dhe kthen një voice_id të lehtë dhe të qëndrueshëm ( replicated_voice.id , siç është voice_abc123... ). Mund ta kaloni këtë voice_id nëpër kërkesa dhe ta menaxhoni atë me voices.list() , voices.get() dhe voices.delete() .
  • Çelësa pa gjendje të menaxhuar nga klienti ( store=False , opsional): Për ngarkesat e punës që kërkojnë zero qëndrueshmëri nga ana e serverit të profileve biometrike të zërit, vendosni store=False . API kthen një voice_key të enkriptuar dhe të pavarur ( replicated_voice.key , duke filluar me voicekey_... ) që aplikacioni juaj e ruan lokalisht dhe e kalon direkt në kërkesat e sintezës.
Modaliteti i ruajtjes Identifikues Limiti i projektit Mbajtja (TTL)
Zëra shtetërorë ( store=True ) voice_... 200 zëra për projekt (të ndarë midis zërave të nxitur dhe të replikuar) 1 vit
Taste zanore pa shtetësi ( store=False ) voicekey_... Menaxhuar nga klienti 7 ditë

Çdo kërkesë për replikim të CreateVoice kërkon dy regjistrime audio të vërteta njerëzore nga i njëjti folës i rritur (rekomandohet WAV mono 16-bit 24kHz):

  1. Audio referuese ( source_audio ): Një klip 10-30 sekondash me të folur të pastër dhe natyrale nga folësi, zërin e të cilit dëshironi ta replikoni.
  2. Audio e pëlqimit ( consent_audio ): Një regjistrim i të njëjtit folës që reciton qartë deklaratën e detyrueshme të pëlqimit në njërën nga gjuhët e mbështetura (për shembull, në anglisht): > "Unë jam pronari i këtij zëri dhe jap pëlqimin që Google ta përdorë këtë zë për të > krijuar një model sintetik zëri."

Krijo një zë të replikuar (parazgjedhje me gjendje statike)

Përdorni SDK-në Google GenAI ( google-genai 2.25.0+ / @google/genai 2.24.0+) ose REST API me store=True për të krijuar dhe ruajtur një profil zëri të replikuar në projektin tuaj:

Python

import base64
from google import genai

client = genai.Client()

with open("reference_speaker.wav", "rb") as f:
    source_b64 = base64.b64encode(f.read()).decode("utf-8")

with open("speaker_consent.wav", "rb") as f:
    consent_b64 = base64.b64encode(f.read()).decode("utf-8")

# Create a persistent replicated voice (store=True)
replicated_voice = client.voices.create(
    store=True,
    voice={
        "model": "gemini-3.8-flash-tts",
        "type": "replicated",
        "display_name": "Custom Replicated Speaker",
        "replicated": {
            "source_audio": {
                "mime_type": "audio/wav",
                "data": source_b64,
            },
            "consent_audio": {
                "mime_type": "audio/wav",
                "data": consent_b64,
            },
        },
    },
)

print(f"Created voice ID: {replicated_voice.id}")

JavaScript

import * as fs from "node:fs";
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI();

const sourceB64 = fs.readFileSync("reference_speaker.wav").toString("base64");
const consentB64 = fs.readFileSync("speaker_consent.wav").toString("base64");

// Create a persistent replicated voice (store: true)
const replicatedVoice = await ai.voices.create({
  store: true,
  voice: {
    model: "gemini-3.8-flash-tts",
    type: "replicated",
    display_name: "Custom Replicated Speaker",
    replicated: {
      source_audio: {
        mime_type: "audio/wav",
        data: sourceB64,
      },
      consent_audio: {
        mime_type: "audio/wav",
        data: consentB64,
      },
    },
  },
});

console.log(`Created voice ID: ${replicatedVoice.id}`);

PUSHTIM

SOURCE_B64=$(base64 -w 0 reference_speaker.wav)
CONSENT_B64=$(base64 -w 0 speaker_consent.wav)

curl "https://generativelanguage.googleapis.com/v1beta/voices" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d "{
    \"store\": true,
    \"voice\": {
      \"model\": \"gemini-3.8-flash-tts\",
      \"type\": \"replicated\",
      \"display_name\": \"Custom Replicated Speaker\",
      \"replicated\": {
        \"source_audio\": {
          \"mime_type\": \"audio/wav\",
          \"data\": \"$SOURCE_B64\"
        },
        \"consent_audio\": {
          \"mime_type\": \"audio/wav\",
          \"data\": \"$CONSENT_B64\"
        }
      }
    }
  }"

Sintetizoni fjalimin me zërin tuaj të replikuar

Kaloni id në e kthyer ( voice_... ) në kërkesën tuaj të sintezës:

Python

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{
        "type": "user_input",
        "content": [{
            "type": "text",
            "text": (
                "Hello! This audio was synthesized using a replicated"
                " speaker voice."
            ),
            "annotations": [{
                "type": "speech_metadata",
                "style": "warm and conversational",
            }],
        }],
    }],
    response_format={"type": "audio"},
    generation_config={
        "speech_config": [
            {"voice": replicated_voice.id},
        ]
    },
)

with open("replicated_speech.wav", "wb") as f:
    f.write(base64.b64decode(interaction.output_audio.data))

JavaScript

import * as fs from "node:fs";
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI();

const interaction = await ai.interactions.create({
  model: "gemini-3.8-flash-tts",
  input: [{
    type: "user_input",
    content: [{
      type: "text",
      text: "Hello! This audio was synthesized using a replicated speaker voice.",
      annotations: [{
        type: "speech_metadata",
        style: "warm and conversational",
      }],
    }],
  }],
  response_format: { type: "audio" },
  generation_config: {
    speech_config: [
      { voice: replicatedVoice.id },
    ],
  },
});

fs.writeFileSync("replicated_speech.wav", Buffer.from(interaction.output_audio.data, "base64"));

PUSHTIM

curl "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "model": "gemini-3.8-flash-tts",
    "input": [{
      "type": "user_input",
      "content": [{
        "type": "text",
        "text": "Hello! This audio was synthesized using a replicated speaker voice.",
        "annotations": [{
          "type": "speech_metadata",
          "style": "warm and conversational"
        }]
      }]
    }],
    "response_format": {"type": "audio"},
    "generation_config": {
      "speech_config": [
        {"voice": "voice_YOUR_REPLICATED_VOICE_ID"}
      ]
    }
  }'

Menaxho zërat e ruajtur të replikuar

Kur krijohet me store=True , zërat tuaj të replikuar mund të listohen, filtrohen, inspektohen dhe fshihen përmes Voices API (shihni Biblioteka e Zërit e Zgjeruar dhe filtrimi për të gjithë parametrat e filtrit):

Python

from google import genai

client = genai.Client()

# List stored replicated voices in your project
response = client.voices.list(type_=["replicated"])
for voice in response.voices or []:
    print(voice.id, voice.display_name, voice.type)

# Retrieve a specific voice by ID
voice_details = client.voices.get(id=replicated_voice.id)

# Delete a stored replicated voice
client.voices.delete(id=replicated_voice.id)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI();

// List stored replicated voices in your project
const response = await ai.voices.list({ type: ["replicated"] });
for (const voice of response.voices ?? []) {
  console.log(voice.id, voice.display_name, voice.type);
}

// Retrieve a specific voice by ID
const voiceDetails = await ai.voices.get(replicatedVoice.id);

// Delete a stored replicated voice
await ai.voices.delete(replicatedVoice.id);

PUSHTIM

# List stored replicated voices in your project
curl -G "https://generativelanguage.googleapis.com/v1beta/voices" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  --data-urlencode "type=replicated"

# Retrieve a specific voice by ID
curl "https://generativelanguage.googleapis.com/v1beta/voices/voice_YOUR_REPLICATED_VOICE_ID" \
  -H "x-goog-api-key: $GEMINI_API_KEY"

# Delete a stored replicated voice
curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/voices/voice_YOUR_REPLICATED_VOICE_ID" \
  -H "x-goog-api-key: $GEMINI_API_KEY"

Opsioni: Çelësa zanorë pa shtetësi të menaxhuar nga klienti ( store=False )

Nëse aplikacioni juaj nuk kërkon qëndrueshmëri zero të profileve të zërit në anën e serverit, vendosni store=False kur krijoni zërin e replikuar. API kthen një voice_key të enkriptuar ( replicated_voice.key , duke filluar me voicekey_... ) që e ruani në anën e klientit dhe e kaloni direkt kudo që pranohet një ID voice :

Python

import base64
from google import genai

client = genai.Client()

with open("reference_speaker.wav", "rb") as f:
    source_b64 = base64.b64encode(f.read()).decode("utf-8")

with open("speaker_consent.wav", "rb") as f:
    consent_b64 = base64.b64encode(f.read()).decode("utf-8")

# Create a stateless client-managed voice key (store=False)
replicated_voice = client.voices.create(
    store=False,
    voice={
        "model": "gemini-3.8-flash-tts",
        "type": "replicated",
        "replicated": {
            "source_audio": {"mime_type": "audio/wav", "data": source_b64},
            "consent_audio": {"mime_type": "audio/wav", "data": consent_b64},
        },
    },
)

# Pass replicated_voice.key ("voicekey_...") directly as the speaker voice
interaction = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{
        "type": "user_input",
        "content": [{
            "type": "text",
            "text": "Hello! This audio uses a stateless client-managed voice key.",
            "annotations": [{
                "type": "speech_metadata",
                "style": "warm and conversational",
            }],
        }],
    }],
    response_format={"type": "audio"},
    generation_config={
        "speech_config": [
            {"voice": replicated_voice.key},
        ]
    },
)

JavaScript

import * as fs from "node:fs";
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI();

const sourceB64 = fs.readFileSync("reference_speaker.wav").toString("base64");
const consentB64 = fs.readFileSync("speaker_consent.wav").toString("base64");

// Create a stateless client-managed voice key (store: false)
const replicatedVoice = await ai.voices.create({
  store: false,
  voice: {
    model: "gemini-3.8-flash-tts",
    type: "replicated",
    replicated: {
      source_audio: { mime_type: "audio/wav", data: sourceB64 },
      consent_audio: { mime_type: "audio/wav", data: consentB64 },
    },
  },
});

// Pass replicatedVoice.key ("voicekey_...") directly as the speaker voice
const interaction = await ai.interactions.create({
  model: "gemini-3.8-flash-tts",
  input: [{
    type: "user_input",
    content: [{
      type: "text",
      text: "Hello! This audio uses a stateless client-managed voice key.",
      annotations: [{
        type: "speech_metadata",
        style: "warm and conversational",
      }],
    }],
  }],
  response_format: { type: "audio" },
  generation_config: {
    speech_config: [
      { voice: replicatedVoice.key },
    ],
  },
});

PUSHTIM

SOURCE_B64=$(base64 -w 0 reference_speaker.wav)
CONSENT_B64=$(base64 -w 0 speaker_consent.wav)

curl "https://generativelanguage.googleapis.com/v1beta/voices" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d "{
    \"store\": false,
    \"voice\": {
      \"model\": \"gemini-3.8-flash-tts\",
      \"type\": \"replicated\",
      \"replicated\": {
        \"source_audio\": {\"mime_type\": \"audio/wav\", \"data\": \"$SOURCE_B64\"},
        \"consent_audio\": {\"mime_type\": \"audio/wav\", \"data\": \"$CONSENT_B64\"}
      }
    }
  }"

Audioja e pëlqimit duhet ta recitojë qartë deklaratën e saktë në njërën nga 30 gjuhët e mbështetura:

Gjuha Lokalizimi ( lang_id ) Deklaratë Pëlqimi Fjalë për Fjalë
Arabisht ar-XA أنا مالك هذا الصوت وأوافق على أن تستخدم Google هذا الصوت لإنشاء نموذج صوتي اصطناعي.
Bengalisht bn-IN আমি এই ভয়েসের মালিক এবং আমি একটি সিিক ভয়েস মডেল তৈরি করতে এই ভয়েস ব্যবহা সাথে সম্মতি দিচ্ছি।
Kinezisht (e thjeshtuar) zh-CN我是此声音的拥有者并授权谷歌使用此声音创建语音合成模型
holandez nl-NL Ik ben de eigenaar van deze stem en ik geef Google toestemming om deze stem te gebruiken om een ​​synthetisch stemmodel te maken.
Anglisht (SHBA) en-US Unë jam pronari i këtij zëri dhe jap pëlqimin që Google ta përdorë këtë zë për të krijuar një model sintetik zëri.
Anglisht (MB) en-GB Unë jam pronari i këtij zëri dhe jap pëlqimin që Google ta përdorë këtë zë për të krijuar një model sintetik zëri.
Anglisht (India) en-IN Unë jam pronari i këtij zëri dhe jap pëlqimin që Google ta përdorë këtë zë për të krijuar një model sintetik zëri.
Anglisht (Australi) en-AU Unë jam pronari i këtij zëri dhe jap pëlqimin që Google ta përdorë këtë zë për të krijuar një model sintetik zëri.
Frëngjisht (Francë) fr-FR Je suis le propriétaire de cette voix dhe j'autorise Google à shfrytëzues cette voix pour créer un modèle de voix synthetique.
Frëngjisht (Kanada) fr-CA Je suis le propriétaire de cette voix dhe j'autorise Google à shfrytëzues cette voix pour créer un modèle de voix synthetique.
gjermanisht de-DE Ich bin der Eigentümer dieser Stimme und bin damit einverstanden, dass Google diese Stimme zur Erstellung eines synthetischen Stimmmodells verwendet.
Guxharatisht gu-IN હું આ વોઈસનો માલિક છું અને સિન્થેટિિ મોડલ બનાવવા માટે આ વોઈસનો ઉપનોન કરીપ હું સંમતિ Ju jeni këtu
Hindisht hi-IN मैं इस आवाज का मालिक हूं और मैं सिंथिे आवाज मॉडल बनाने के लिए को इस आवाज कोा लिए करने की सहमति देता हूं
Indonezisht id-ID Saya pemilik suara ini dan saya menyetujui Google menggunakan suara ini untuk membuat model suara sintetis.
italiane it-IT Sono il proprietario di quest voce dhe acconsento che Google la utilizzi për krijimin e modelit të voce sintetica.
Japonez ja-JP私はこの音声の所有者であり、Googleがこの音声を使用して音声合成モデルを作成することを承認します。
Kannada kn-IN ನಾನು ಈ ಧ್ವನಿಯ ಮಾಲಿಕ ಮತ್ತು ಸಂಶ್ಲೇಷಿಕ ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಈ ಧ್ವನಿಯನ್ನು ಬಳಸಿಕೊಂಡುಗೂಗಲ್ ಗೆ ನಾನು ಸಮ್ಮತಿಸುತ್ತೇನೆ.
Koreane ko-KR 나는 이 음성의 소유자이며 구글이 이 음성을 사용하여 음성 구글이 이 음성을 사용하여 음성 합성 모델 허용합니다.
Malajalamisht ml-IN ഈ ശബ്ദത്തിന്റെ ഉടമ ഞാനാണ്, ഒരു സിന്്त വോയ്സ് മോഡൽ സൃഷ്ടിക്കാൻ ഈ ശബ്ദം ഉപയോഗിക്കുന്നതിന് ഞാൻ Google-ന് സമ്മതം നൽകുന്നു.
Marathi mr-IN मी या आवाजाचा मालक आहे आणि सिंथेटि्कक मॉडेल तयार करण्यासाठी हा आवाज वापरण मी Google ला संमती देतो
polak pl-PL Jestem właścicielem tego głosu dhe wyrażam zgodę na wykorzystanie go przez Google w celu utworzenia syntetycznego modelu głosu.
Portugalisht (Brazil) pt-BR Eu sou o proprietário desta voz e autorizo ​​o Google a usá-la para criar um modelo de voz sintética.
ruse ru-RU Я являюсь владельцем этого голоса и даю согласие Google për përdorimin e etogo golosa для создания модели синтетического голоса.
Spanjisht (Spanja) es-ES Soy el propietario de esta voz y doy mi consentimiento para que Google la Utilice për krijimin e modelit të voz sintética.
Spanjisht (SHBA) es-US Soy el propietario de esta voz y doy mi consentimiento para que Google la Utilice për krijimin e modelit të voz sintética.
Tamil ta-IN நான் இந்த குரலின் உரிமையாளர் மற்றுு செயற்கை குரல் மாதிரியை உருவா஁்க இनக இல் பயன்படுத்த குகல்க்கு நான் ஒப்புக்கொள்கிறேன்.
Teluguisht te-IN నేను ఈ వాయిస్ యజమానిని మరియు సింతటి వాయిస్ మోడల్ ని రూపొందించడాన఍కి ిికి ావะ ఉపయోగించడానికి googleకి నేను సమ్మతిస్తిస్తుి.
Tajlandeze th-TH në Google ใช้เสียงนี้เพื่อสร้างแ บบจำลองเสียงสังเคราะห์
turk tr-TR Bu sesin sahibi benim ve Google'ın bu sesi kullanarak sentetik bir ses modeli oluşturmasına izin veriyorum.
Vietnamez vi-VN Tôi là chủ sở hữu giọng nói này và tôi đồng ý cho Google sử dụng giọng nói này để tạo mô hìhnh gi.

Praktikat më të mira për regjistrimin e audios referuese

  • Regjistro në një mjedis të qetë: Minimizo jehonën e dhomës, zhurmën në sfond, muzikën dhe zërat që mbivendosen.
  • Kushtet e regjistrimit të përputhjes: Regjistroni si source_audio ashtu edhe consent_audio në të njëjtin mikrofon dhe në të njëjtin cilësim akustik në mënyrë që kontrolli i verifikimit të altoparlantit të ketë sukses të besueshëm.
  • Konvertoni në WAV mono 24kHz: Për rezultate më të mira, rimodeloni audion hyrëse në WAV PCM mono 16-bit 24kHz para kodimit.

Çfarë vjen më pas

  • Mësoni si të krijoni personazhe të personalizuara nga përshkrimet e tekstit në Dizajnin e Zërit .
  • Eksploroni stilimin sipas radhës, etiketat e integruara dhe dialogun me shumë folës në udhëzuesin Tekst-në-fjalë .