# Gemini Voices API
Note: This API is in Beta. Endpoints are under `/v1beta/`.
The Voices API allows you to create custom voices from natural language prompts (Voice Design) or from reference audio and speaker consent recordings (Voice Replication), as well as list, retrieve, and manage custom and prebuilt voices for Text-to-Speech (TTS) synthesis.
## Voices
### CreateVoice
`POST https://generativelanguage.googleapis.com/v1beta/voices`
Creates a custom voice from a natural-language prompt
(`VOICE_TYPE_PROMPTED`) or from reference and consent audio recordings
(`VOICE_TYPE_REPLICATED`).
#### Request Body
- **store** (`boolean`) Optional. Whether the created voice is persisted and managed by Google. * When `true`, Google stores the voice and returns `Voice.id` (for example, `voice_abc123def456`), which can be managed via `GetVoice`, `ListVoices`, and `DeleteVoice` and referenced by ID in synthesis requests. Stored voices expire after 1 year of inactivity; using a stored voice in speech synthesis or as a `base_voice` in `CreateVoice` extends its `expire_time`. Projects are subject to a maximum active stored voice quota; exceeding the quota returns `RESOURCE_EXHAUSTED`. * When `false` (default), the voice is not stored by Google and `Voice.key` (for example, `voicekey_...`) is returned for client-side storage and synthesis. Optional discovery metadata fields on `voice` are not persisted or returned when `store` is `false`. * Required to be `true` when `voice.type` is `"prompted"` (otherwise fails with `INVALID_ARGUMENT`).
- **voice** (`Voice`) *(Required)* Required. The voice to create. `voice.model` is optional; if omitted, the service selects the default voice creation model. Output-only fields on `Voice` (`id`, `key`, `expire_time`, `usage`) are ignored if set.
#### Response
- **accent** (`string`) Optional. Regional accent descriptor (e.g. "American", "British").
- **context** (`string`) Optional. Optimal usage context or domain (e.g. "Conversational", "Audiobook", "News").
- **description** (`string`) Optional. Descriptive summary of vocal timbre, personality, and tone.
- **display_name** (`string`) Optional. User-provided display name for a stored voice (`store = true`), or the catalog name for a prebuilt voice.
- **expire_time** (`string`) Output only. The timestamp at which a custom stored voice (`store = true`) or replicated voice key (`store = false`) expires. For custom stored voices (`store = true`), this expiration time is extended when the voice is used for speech synthesis or as a `base_voice` in `CreateVoice`. Unset for prebuilt catalog voices (`"prebuilt"`), which do not expire.
- **gender** (`string`) Optional. Perceived voice gender presentation (e.g. "female", "male", "neutral").
- **id** (`string`) Output only. The unique identifier of the voice. * For Google-managed custom voices (`store = true`), this is a generated ID with prefix `voice_` (for example, `voice_abc123def456`). Pass `voices/{id}` as the `name` in `GetVoice` and `DeleteVoice`, and pass `{id}` directly to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis. * For prebuilt catalog voices (`"prebuilt"` returned by `ListVoices`), this is the speaker name (for example, `Puck` or `Charon`). * Unset when `CreateVoice` is called with `store = false`.
- **key** (`string`) Output only. The client-managed voice replication key (with prefix `voicekey_`). Returned only by `CreateVoice` when `type` is `"replicated"` and `store` is `false`. Pass this key to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis.
- **language_code** (`string`) Optional. Primary BCP-47 language tag (e.g. "en-US", "fr-FR").
- **model** (`string`) Optional. The model used to design or replicate the voice. If omitted in `CreateVoice`, defaults to the latest supported voice design model. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for custom voices (`"prompted"` and `"replicated"`); unset for `"prebuilt"` voices. Created voices can be synthesized across any supported TTS synthesis model.
- **persona** (`string`) Optional. Intended persona or character archetype (e.g. "Warm, Friendly", "Narrator").
- **pitch** (`Pitch`) Optional. Voice pitch classification.
Possible values:
- `low`: Lower pitch voice.
- `medium`: Medium pitch voice.
- `high`: Higher pitch voice.
- **prompted** (`PromptedVoice`) Parameters for prompted voice generation. Required in `CreateVoice` when `type` is `"prompted"`. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for prompted voices.
- **input** (`string`) *(Required)* Required. The natural-language prompt describing the desired voice, e.g. "A deep, booming male voice of a massive evil ogre in his middle years."
- **region_code** (`string`) Optional. ISO 3166-1 alpha-2 or UN M.49 geographic region code (e.g. "US", "GB", "001").
- **sample_audio** (`AudioData`) Output only. Sample audio (synthesizer prompt audio) generated for a prompted voice. Populated only in `CreateVoice` and `GetVoice` responses when `type` is `"prompted"`; unset in `ListVoices` responses and for `"replicated"` or `"prebuilt"` voices.
- **data** (`string`) *(Required)* Required. The raw audio bytes.
- **mime_type** (`string`) *(Required)* Required. The IANA MIME type of the audio data (for example, `audio/wav` or `audio/mpeg`).
- **type** (`VoiceType`) Required. The type of the voice. In `CreateVoice`, must be `"replicated"` or `"prompted"`. In `ListVoices` responses, may also be `"prebuilt"`.
Possible values:
- `replicated`: A custom voice replicated from a reference audio sample and speaker consent
recording.
- `prompted`: A custom voice generated from a natural-language text prompt (optionally
editing or remixing a `base_voice`).
- `prebuilt`: A built-in system voice from Google's voice catalog (e.g., `Puck`,
`Charon`). Returned in responses; cannot be specified as the type in
`CreateVoice`.
- **usage** (`Usage`) Output only. Token usage statistics for the voice creation request. Populated only in the response of `CreateVoice` when `type` is `"prompted"`; unset for `"replicated"` and in `GetVoice` and `ListVoices` responses.
- **cached_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of cached token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **grounding_tool_count** (`array (GroundingToolCount)`) Grounding tool count.
- **count** (`integer`) The number of grounding tool counts.
- **type** (`enum (string)`) The grounding tool type associated with the count.
Possible values:
- `google_search`: Grounding with Google Web Search and Image Search, & Web Grounding
for Enterprise.
- `google_maps`: Grounding with Google Maps.
- `retrieval`: Grounding with customer's data, for example, VertexAISearch.
- **input_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of input token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **output_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of output token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **tool_use_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of tool-use token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **total_cached_tokens** (`integer`) Number of tokens in the cached part of the prompt (the cached content).
- **total_input_tokens** (`integer`) Number of tokens in the prompt (context).
- **total_output_tokens** (`integer`) Total number of tokens across all the generated responses.
- **total_thought_tokens** (`integer`) Number of tokens of thoughts for thinking models.
- **total_tokens** (`integer`) Total token count for the interaction request (prompt + responses + other internal tokens).
- **total_tool_use_tokens** (`integer`) Number of tokens present in tool-use prompt(s).
#### Examples
**Create**
**REST**
```sh
curl -X POST https://generativelanguage.googleapis.com/v1beta/voices \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"store": true,
"voice": {
"type": "prompted",
"display_name": "Warm Narrator",
"language_code": "en-US",
"prompted": {
"input": "A warm, friendly narrator voice with a calm pace."
}
}
}'
```
**Python**
```python
from google import genai
client = genai.Client()
voice = client.voices.create(
store=True,
voice={
"type": "prompted",
"display_name": "Warm Narrator",
"language_code": "en-US",
"prompted": {
"input": "A warm, friendly narrator voice with a calm pace.",
},
},
)
print(voice.id)
```
**JavaScript**
```javascript
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
const voice = await ai.voices.create({
store: true,
voice: {
type: 'prompted',
display_name: 'Warm Narrator',
language_code: 'en-US',
prompted: {
input: 'A warm, friendly narrator voice with a calm pace.',
},
},
});
console.log(voice.id);
```
**Go**
```go
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
gaos_voices "google.golang.org/genai/interactions/models/voices"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
req := operations.CreateVoiceRequest{
Body: gaos_voices.CreateVoiceRequest{
Store: genai.Ptr(true),
Voice: gaos_voices.VoiceInput{
Type: gaos_voices.VoiceTypePrompted,
DisplayName: genai.Ptr("Warm Narrator"),
LanguageCode: genai.Ptr("en-US"),
Prompted: &gaos_voices.PromptedVoice{
Input: "A warm, friendly narrator voice with a calm pace.",
},
},
},
}
res, err := client.Voices.Create(ctx, req)
if err != nil {
log.Fatal(err)
}
if res.Voice != nil && res.Voice.ID != nil {
fmt.Println(*res.Voice.ID)
}
}
```
---
### ListVoices
`GET https://generativelanguage.googleapis.com/v1beta/voices`
Lists custom stored voices owned by the caller (ordered newest first)
followed by prebuilt system voices from Google's voice catalog.
#### Parameters
- **accent** (`array (string)`) Optional. Filter by accent description (e.g. "American", "British"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified accents (OR).
- **context** (`array (string)`) Optional. Filter by intended context or domain (e.g. "News, Commercial"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified contexts (OR).
- **gender** (`array (string)`) Optional. Filter by gender presentation (e.g. "female", "male", "neutral"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified genders (OR).
- **language_code** (`array (string)`) Optional. Filter by BCP-47 language code (e.g. "en-US"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified language codes (OR).
- **page_size** (`integer`) Optional. The maximum number of voices to return per page. The service may return fewer than this value. If unspecified, at most 50 voices are returned. The maximum value is 1000; values above 1000 are coerced to 1000.
- **page_token** (`string`) Optional. A page token received from a previous `ListVoices` call. Provide this to retrieve the subsequent page. When paginating, all filter query parameters (`language_code`, `region_code`, `accent`, `persona`, `context`, `gender`, `pitch`, `type`, and `search`) must match the call that returned this token; otherwise the request fails with `INVALID_ARGUMENT`. `page_size` may change between pages.
- **persona** (`array (string)`) Optional. Filter by vocal persona (e.g. "Warm, Friendly"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified personas (OR).
- **pitch** (`array (string)`) Optional. Filter by vocal pitch. Accepts `"low"`, `"medium"`, `"high"` (case-insensitive). If multiple values are specified, matches voices with any of the specified pitches (OR).
- **region_code** (`array (string)`) Optional. Filter by ISO 3166-1 alpha-2 or UN M.49 region code (e.g. "US", "001"). Case-insensitive exact match. If multiple values are specified, matches voices with any of the specified region codes (OR).
- **search** (`string`) Optional. Free-text substring search query matched case-insensitively against both `display_name` and `description`. Maximum 2048 bytes.
- **type** (`array (string)`) Optional. Filter by voice type. Accepts `"prebuilt"`, `"replicated"`, `"prompted"` (case-insensitive). If multiple values are specified, matches voices with any of the specified types (OR).
#### Response
- **next_page_token** (`string`) A token that can be sent as `page_token` to retrieve the next page. If empty, there are no subsequent pages.
- **voices** (`array (Voice)`) The voices from the specified collection.
#### Examples
**List**
**REST**
```sh
curl -X GET https://generativelanguage.googleapis.com/v1beta/voices \
-H "x-goog-api-key: $GEMINI_API_KEY"
```
**Python**
```python
from google import genai
client = genai.Client()
response = client.voices.list()
for voice in response.voices or []:
print(voice.id, voice.display_name)
```
**JavaScript**
```javascript
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
const response = await ai.voices.list();
for (const voice of response.voices ?? []) {
console.log(voice.id, voice.display_name);
}
```
**Go**
```go
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Voices.List(ctx, operations.ListVoicesRequest{})
if err != nil {
log.Fatal(err)
}
if res.ListVoicesResponse != nil {
for _, voice := range res.ListVoicesResponse.Voices {
if voice.ID != nil && voice.DisplayName != nil {
fmt.Println(*voice.ID, *voice.DisplayName)
}
}
}
}
```
---
### GetVoice
`GET https://generativelanguage.googleapis.com/v1beta/voices/{voicesId}`
Gets a custom stored voice (`store = true`) by resource name.
Prebuilt catalog voices (`VOICE_TYPE_PREBUILT`) cannot be retrieved via
`GetVoice`; use `ListVoices` instead.
#### Parameters
- **voicesId** (`string`) *(Required)* Required. The resource name of the custom stored voice to retrieve (for example, `voices/voice_abc123def456`).
#### Response
- **accent** (`string`) Optional. Regional accent descriptor (e.g. "American", "British").
- **context** (`string`) Optional. Optimal usage context or domain (e.g. "Conversational", "Audiobook", "News").
- **description** (`string`) Optional. Descriptive summary of vocal timbre, personality, and tone.
- **display_name** (`string`) Optional. User-provided display name for a stored voice (`store = true`), or the catalog name for a prebuilt voice.
- **expire_time** (`string`) Output only. The timestamp at which a custom stored voice (`store = true`) or replicated voice key (`store = false`) expires. For custom stored voices (`store = true`), this expiration time is extended when the voice is used for speech synthesis or as a `base_voice` in `CreateVoice`. Unset for prebuilt catalog voices (`"prebuilt"`), which do not expire.
- **gender** (`string`) Optional. Perceived voice gender presentation (e.g. "female", "male", "neutral").
- **id** (`string`) Output only. The unique identifier of the voice. * For Google-managed custom voices (`store = true`), this is a generated ID with prefix `voice_` (for example, `voice_abc123def456`). Pass `voices/{id}` as the `name` in `GetVoice` and `DeleteVoice`, and pass `{id}` directly to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis. * For prebuilt catalog voices (`"prebuilt"` returned by `ListVoices`), this is the speaker name (for example, `Puck` or `Charon`). * Unset when `CreateVoice` is called with `store = false`.
- **key** (`string`) Output only. The client-managed voice replication key (with prefix `voicekey_`). Returned only by `CreateVoice` when `type` is `"replicated"` and `store` is `false`. Pass this key to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis.
- **language_code** (`string`) Optional. Primary BCP-47 language tag (e.g. "en-US", "fr-FR").
- **model** (`string`) Optional. The model used to design or replicate the voice. If omitted in `CreateVoice`, defaults to the latest supported voice design model. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for custom voices (`"prompted"` and `"replicated"`); unset for `"prebuilt"` voices. Created voices can be synthesized across any supported TTS synthesis model.
- **persona** (`string`) Optional. Intended persona or character archetype (e.g. "Warm, Friendly", "Narrator").
- **pitch** (`Pitch`) Optional. Voice pitch classification.
Possible values:
- `low`: Lower pitch voice.
- `medium`: Medium pitch voice.
- `high`: Higher pitch voice.
- **prompted** (`PromptedVoice`) Parameters for prompted voice generation. Required in `CreateVoice` when `type` is `"prompted"`. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for prompted voices.
- **input** (`string`) *(Required)* Required. The natural-language prompt describing the desired voice, e.g. "A deep, booming male voice of a massive evil ogre in his middle years."
- **region_code** (`string`) Optional. ISO 3166-1 alpha-2 or UN M.49 geographic region code (e.g. "US", "GB", "001").
- **sample_audio** (`AudioData`) Output only. Sample audio (synthesizer prompt audio) generated for a prompted voice. Populated only in `CreateVoice` and `GetVoice` responses when `type` is `"prompted"`; unset in `ListVoices` responses and for `"replicated"` or `"prebuilt"` voices.
- **data** (`string`) *(Required)* Required. The raw audio bytes.
- **mime_type** (`string`) *(Required)* Required. The IANA MIME type of the audio data (for example, `audio/wav` or `audio/mpeg`).
- **type** (`VoiceType`) Required. The type of the voice. In `CreateVoice`, must be `"replicated"` or `"prompted"`. In `ListVoices` responses, may also be `"prebuilt"`.
Possible values:
- `replicated`: A custom voice replicated from a reference audio sample and speaker consent
recording.
- `prompted`: A custom voice generated from a natural-language text prompt (optionally
editing or remixing a `base_voice`).
- `prebuilt`: A built-in system voice from Google's voice catalog (e.g., `Puck`,
`Charon`). Returned in responses; cannot be specified as the type in
`CreateVoice`.
- **usage** (`Usage`) Output only. Token usage statistics for the voice creation request. Populated only in the response of `CreateVoice` when `type` is `"prompted"`; unset for `"replicated"` and in `GetVoice` and `ListVoices` responses.
- **cached_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of cached token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **grounding_tool_count** (`array (GroundingToolCount)`) Grounding tool count.
- **count** (`integer`) The number of grounding tool counts.
- **type** (`enum (string)`) The grounding tool type associated with the count.
Possible values:
- `google_search`: Grounding with Google Web Search and Image Search, & Web Grounding
for Enterprise.
- `google_maps`: Grounding with Google Maps.
- `retrieval`: Grounding with customer's data, for example, VertexAISearch.
- **input_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of input token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **output_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of output token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **tool_use_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of tool-use token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **total_cached_tokens** (`integer`) Number of tokens in the cached part of the prompt (the cached content).
- **total_input_tokens** (`integer`) Number of tokens in the prompt (context).
- **total_output_tokens** (`integer`) Total number of tokens across all the generated responses.
- **total_thought_tokens** (`integer`) Number of tokens of thoughts for thinking models.
- **total_tokens** (`integer`) Total token count for the interaction request (prompt + responses + other internal tokens).
- **total_tool_use_tokens** (`integer`) Number of tokens present in tool-use prompt(s).
#### Examples
**Get**
**REST**
```sh
curl -X GET https://generativelanguage.googleapis.com/v1beta/voices/voice_abc123 \
-H "x-goog-api-key: $GEMINI_API_KEY"
```
**Python**
```python
from google import genai
client = genai.Client()
voice = client.voices.get(id="voice_abc123")
print(voice.id, voice.display_name)
```
**JavaScript**
```javascript
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
const voice = await ai.voices.get('voice_abc123');
console.log(voice.id, voice.display_name);
```
**Go**
```go
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Voices.Get(ctx, operations.GetVoiceRequest{
ID: "voice_abc123",
})
if err != nil {
log.Fatal(err)
}
if res.Voice != nil && res.Voice.ID != nil && res.Voice.DisplayName != nil {
fmt.Println(*res.Voice.ID, *res.Voice.DisplayName)
}
}
```
---
### DeleteVoice
`DELETE https://generativelanguage.googleapis.com/v1beta/voices/{voicesId}`
Deletes a custom stored voice (`store = true`) by resource name.
Prebuilt catalog voices (`VOICE_TYPE_PREBUILT`) cannot be deleted.
#### Parameters
- **voicesId** (`string`) *(Required)* Required. The resource name of the custom stored voice to delete (for example, `voices/voice_abc123def456`).
#### Response
#### Examples
**Delete**
**REST**
```sh
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/voices/voice_abc123 \
-H "x-goog-api-key: $GEMINI_API_KEY"
```
**Python**
```python
from google import genai
client = genai.Client()
client.voices.delete(id="voice_abc123")
```
**JavaScript**
```javascript
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
await ai.voices.delete('voice_abc123');
```
**Go**
```go
package main
import (
"context"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
_, err = client.Voices.Delete(ctx, operations.DeleteVoiceRequest{
ID: "voice_abc123",
})
if err != nil {
log.Fatal(err)
}
}
```
---
## Resources
### Voice { #Resource:Voice }
A voice resource representing either a custom voice (created via
`CreateVoice`) or a prebuilt system voice (returned by `ListVoices`).
**Properties:**
- **accent** (`string`) Optional. Regional accent descriptor (e.g. "American", "British").
- **context** (`string`) Optional. Optimal usage context or domain (e.g. "Conversational", "Audiobook", "News").
- **description** (`string`) Optional. Descriptive summary of vocal timbre, personality, and tone.
- **display_name** (`string`) Optional. User-provided display name for a stored voice (`store = true`), or the catalog name for a prebuilt voice.
- **expire_time** (`string`) Output only. The timestamp at which a custom stored voice (`store = true`) or replicated voice key (`store = false`) expires. For custom stored voices (`store = true`), this expiration time is extended when the voice is used for speech synthesis or as a `base_voice` in `CreateVoice`. Unset for prebuilt catalog voices (`"prebuilt"`), which do not expire.
- **gender** (`string`) Optional. Perceived voice gender presentation (e.g. "female", "male", "neutral").
- **id** (`string`) Output only. The unique identifier of the voice. * For Google-managed custom voices (`store = true`), this is a generated ID with prefix `voice_` (for example, `voice_abc123def456`). Pass `voices/{id}` as the `name` in `GetVoice` and `DeleteVoice`, and pass `{id}` directly to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis. * For prebuilt catalog voices (`"prebuilt"` returned by `ListVoices`), this is the speaker name (for example, `Puck` or `Charon`). * Unset when `CreateVoice` is called with `store = false`.
- **key** (`string`) Output only. The client-managed voice replication key (with prefix `voicekey_`). Returned only by `CreateVoice` when `type` is `"replicated"` and `store` is `false`. Pass this key to `SpeechConfig.voice_config.voice` (or `SpeechConfig.voice`) during speech synthesis.
- **language_code** (`string`) Optional. Primary BCP-47 language tag (e.g. "en-US", "fr-FR").
- **model** (`string`) Optional. The model used to design or replicate the voice. If omitted in `CreateVoice`, defaults to the latest supported voice design model. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for custom voices (`"prompted"` and `"replicated"`); unset for `"prebuilt"` voices. Created voices can be synthesized across any supported TTS synthesis model.
- **persona** (`string`) Optional. Intended persona or character archetype (e.g. "Warm, Friendly", "Narrator").
- **pitch** (`Pitch`) Optional. Voice pitch classification.
Possible values:
- `low`: Lower pitch voice.
- `medium`: Medium pitch voice.
- `high`: Higher pitch voice.
- **prompted** (`PromptedVoice`) Parameters for prompted voice generation. Required in `CreateVoice` when `type` is `"prompted"`. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses for prompted voices.
- **input** (`string`) *(Required)* Required. The natural-language prompt describing the desired voice, e.g. "A deep, booming male voice of a massive evil ogre in his middle years."
- **region_code** (`string`) Optional. ISO 3166-1 alpha-2 or UN M.49 geographic region code (e.g. "US", "GB", "001").
- **replicated** (`ReplicatedVoice`) Input only. Parameters for replicated voice generation. Required on input when `type` is `"replicated"`. Not returned in responses.
- **consent_audio** (`AudioData`) *(Required)* Required. Audio recording of the same speaker reading the required consent phrase, confirming authorization to replicate the voice.
- **data** (`string`) *(Required)* Required. The raw audio bytes.
- **mime_type** (`string`) *(Required)* Required. The IANA MIME type of the audio data (for example, `audio/wav` or `audio/mpeg`).
- **source_audio** (`AudioData`) *(Required)* Required. The reference audio sample of the speaker's voice to replicate. Must be an unmodified recording of an adult human voice.
- **data** (`string`) *(Required)* Required. The raw audio bytes.
- **mime_type** (`string`) *(Required)* Required. The IANA MIME type of the audio data (for example, `audio/wav` or `audio/mpeg`).
- **sample_audio** (`AudioData`) Output only. Sample audio (synthesizer prompt audio) generated for a prompted voice. Populated only in `CreateVoice` and `GetVoice` responses when `type` is `"prompted"`; unset in `ListVoices` responses and for `"replicated"` or `"prebuilt"` voices.
- **data** (`string`) *(Required)* Required. The raw audio bytes.
- **mime_type** (`string`) *(Required)* Required. The IANA MIME type of the audio data (for example, `audio/wav` or `audio/mpeg`).
- **type** (`VoiceType`) *(Required)* Required. The type of the voice. In `CreateVoice`, must be `"replicated"` or `"prompted"`. In `ListVoices` responses, may also be `"prebuilt"`.
Possible values:
- `replicated`: A custom voice replicated from a reference audio sample and speaker consent
recording.
- `prompted`: A custom voice generated from a natural-language text prompt (optionally
editing or remixing a `base_voice`).
- `prebuilt`: A built-in system voice from Google's voice catalog (e.g., `Puck`,
`Charon`). Returned in responses; cannot be specified as the type in
`CreateVoice`.
- **usage** (`Usage`) Output only. Token usage statistics for the voice creation request. Populated only in the response of `CreateVoice` when `type` is `"prompted"`; unset for `"replicated"` and in `GetVoice` and `ListVoices` responses.
- **cached_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of cached token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **grounding_tool_count** (`array (GroundingToolCount)`) Grounding tool count.
- **count** (`integer`) The number of grounding tool counts.
- **type** (`enum (string)`) The grounding tool type associated with the count.
Possible values:
- `google_search`: Grounding with Google Web Search and Image Search, & Web Grounding
for Enterprise.
- `google_maps`: Grounding with Google Maps.
- `retrieval`: Grounding with customer's data, for example, VertexAISearch.
- **input_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of input token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **output_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of output token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **tool_use_tokens_by_modality** (`array (ModalityTokens)`) A breakdown of tool-use token usage by modality.
- **modality** (`ResponseModality`) The modality associated with the token count.
Possible values:
- `text`: Indicates the model should return text.
- `image`: Indicates the model should return images.
- `audio`: Indicates the model should return audio.
- `video`: Indicates the model should return video.
- `document`: Indicates the model should return documents.
- **tokens** (`integer`) Number of tokens for the modality.
- **total_cached_tokens** (`integer`) Number of tokens in the cached part of the prompt (the cached content).
- **total_input_tokens** (`integer`) Number of tokens in the prompt (context).
- **total_output_tokens** (`integer`) Total number of tokens across all the generated responses.
- **total_thought_tokens** (`integer`) Number of tokens of thoughts for thinking models.
- **total_tokens** (`integer`) Total token count for the interaction request (prompt + responses + other internal tokens).
- **total_tool_use_tokens** (`integer`) Number of tokens present in tool-use prompt(s).
**JSON Representation:**
```json
{
"accent": "string",
"context": "string",
"description": "string",
"display_name": "string",
"expire_time": "string",
"gender": "string",
"id": "string",
"key": "string",
"language_code": "string",
"model": "string",
"persona": "string",
"pitch": "low",
"prompted": {
"input": "string"
},
"region_code": "string",
"replicated": {
"consent_audio": {
"data": "string",
"mime_type": "string"
},
"source_audio": {
"data": "string",
"mime_type": "string"
}
},
"sample_audio": {
"data": "string",
"mime_type": "string"
},
"type": "replicated",
"usage": {
"cached_tokens_by_modality": [
{
"modality": "text",
"tokens": 0
}
],
"grounding_tool_count": [
{
"count": 0,
"type": "google_search"
}
],
"input_tokens_by_modality": [
{
"modality": "text",
"tokens": 0
}
],
"output_tokens_by_modality": [
{
"modality": "text",
"tokens": 0
}
],
"tool_use_tokens_by_modality": [
{
"modality": "text",
"tokens": 0
}
],
"total_cached_tokens": 0,
"total_input_tokens": 0,
"total_output_tokens": 0,
"total_thought_tokens": 0,
"total_tokens": 0,
"total_tool_use_tokens": 0
}
}
```