Obtén una lista de todas las voces compatibles

Para obtener una lista completa de las voces compatibles, llama al extremo voices:list de la API. También puedes encontrar la lista completa de voces disponibles en la página de voces compatibles.

En los siguientes fragmentos de código, se muestra cómo enumerar las voces disponibles en la API de Text-to-Speech para la síntesis de texto a voz.

Para estas muestras, se requiere tener configurado gcloud, y haber creado y activado una cuenta de servicio. Para obtener información sobre la configuración de gcloud y sobre cómo crear y activar una cuenta de servicio, consulta la guía de inicio rápido de Text-to-Speech.

Protocolo

Consulta el extremo voices:list de la API para obtener todos los detalles.

Para obtener una lista de las voces disponibles para la síntesis de texto a voz, realiza una solicitud GET al extremo voices:list de la API.

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://texttospeech.googleapis.com/v1/voices"

La API de Text-to-Speech muestra un resultado con formato JSON similar al siguiente:

{
  "voices": [
    {
      "languageCodes": [
        "es-ES"
      ],
      "name": "es-ES-Standard-A",
      "ssmlGender": "FEMALE",
      "naturalSampleRateHertz": 24000
    },
    {
      "languageCodes": [
        "ja-JP"
      ],
      "name": "ja-JP-Standard-A",
      "ssmlGender": "FEMALE",
      "naturalSampleRateHertz": 22050
    },
    {
      "languageCodes": [
        "pt-BR"
      ],
      "name": "pt-BR-Standard-A",
      "ssmlGender": "FEMALE",
      "naturalSampleRateHertz": 24000
    },
        ...
  ]
}

C#

/// <summary>
/// Lists all the voices available for speech synthesis.
/// </summary>
/// <param name="desiredLanguageCode">Language code to filter on</param>
public static int ListVoices(string desiredLanguageCode = "")
{
    TextToSpeechClient client = TextToSpeechClient.Create();

    // Performs the list voices request
    var response = client.ListVoices(new ListVoicesRequest
    {
        LanguageCode = desiredLanguageCode
    });

    foreach (Voice voice in response.Voices)
    {
        // Display the voices's name.
        Console.WriteLine($"Name: {voice.Name}");

        // Display the supported language codes for this voice.
        foreach (var languageCode in voice.LanguageCodes)
        {
            Console.WriteLine($"Supported language(s): {languageCode}");
        }

        // Display the SSML Voice Gender
        Console.WriteLine("SSML Voice Gender: " +
            (SsmlVoiceGender)voice.SsmlGender);

        // Display the natural sample rate hertz for this voice.
        Console.WriteLine("Natural Sample Rate Hertz: " +
            voice.NaturalSampleRateHertz);
    }
    return 0;
}

Go


// ListVoices lists the available text to speech voices.
func ListVoices(w io.Writer) error {
	ctx := context.Background()

	client, err := texttospeech.NewClient(ctx)
	if err != nil {
		return err
	}

	// Performs the list voices request.
	resp, err := client.ListVoices(ctx, &texttospeechpb.ListVoicesRequest{})
	if err != nil {
		return err
	}

	for _, voice := range resp.Voices {
		// Display the voice's name. Example: tpc-vocoded
		fmt.Fprintf(w, "Name: %v\n", voice.Name)

		// Display the supported language codes for this voice. Example: "en-US"
		for _, languageCode := range voice.LanguageCodes {
			fmt.Fprintf(w, "  Supported language: %v\n", languageCode)
		}

		// Display the SSML Voice Gender.
		fmt.Fprintf(w, "  SSML Voice Gender: %v\n", voice.SsmlGender.String())

		// Display the natural sample rate hertz for this voice. Example: 24000
		fmt.Fprintf(w, "  Natural Sample Rate Hertz: %v\n",
			voice.NaturalSampleRateHertz)
	}

	return nil
}

Java

/**
 * Demonstrates using the Text to Speech client to list the client's supported voices.
 *
 * @throws Exception on TextToSpeechClient Errors.
 */
public static List<Voice> listAllSupportedVoices() throws Exception {
  // Instantiates a client
  try (TextToSpeechClient textToSpeechClient = TextToSpeechClient.create()) {
    // Builds the text to speech list voices request
    ListVoicesRequest request = ListVoicesRequest.getDefaultInstance();

    // Performs the list voices request
    ListVoicesResponse response = textToSpeechClient.listVoices(request);
    List<Voice> voices = response.getVoicesList();

    for (Voice voice : voices) {
      // Display the voice's name. Example: tpc-vocoded
      System.out.format("Name: %s\n", voice.getName());

      // Display the supported language codes for this voice. Example: "en-us"
      List<ByteString> languageCodes = voice.getLanguageCodesList().asByteStringList();
      for (ByteString languageCode : languageCodes) {
        System.out.format("Supported Language: %s\n", languageCode.toStringUtf8());
      }

      // Display the SSML Voice Gender
      System.out.format("SSML Voice Gender: %s\n", voice.getSsmlGender());

      // Display the natural sample rate hertz for this voice. Example: 24000
      System.out.format("Natural Sample Rate Hertz: %s\n\n", voice.getNaturalSampleRateHertz());
    }
    return voices;
  }
}

Node.js

const textToSpeech = require('@google-cloud/text-to-speech');

const client = new textToSpeech.TextToSpeechClient();

const [result] = await client.listVoices({});
const voices = result.voices;

console.log('Voices:');
voices.forEach(voice => {
  console.log(`Name: ${voice.name}`);
  console.log(`  SSML Voice Gender: ${voice.ssmlGender}`);
  console.log(`  Natural Sample Rate Hertz: ${voice.naturalSampleRateHertz}`);
  console.log('  Supported languages:');
  voice.languageCodes.forEach(languageCode => {
    console.log(`    ${languageCode}`);
  });
});

PHP

use Google\Cloud\TextToSpeech\V1\TextToSpeechClient;

// create client object
$client = new TextToSpeechClient();

// perform list voices request
$response = $client->listVoices();
$voices = $response->getVoices();

foreach ($voices as $voice) {
    // display the voice's name. example: tpc-vocoded
    printf('Name: %s' . PHP_EOL, $voice->getName());

    // display the supported language codes for this voice. example: 'en-US'
    foreach ($voice->getLanguageCodes() as $languageCode) {
        printf('Supported language: %s' . PHP_EOL, $languageCode);
    }

    // SSML voice gender values from TextToSpeech\V1\SsmlVoiceGender
    $ssmlVoiceGender = ['SSML_VOICE_GENDER_UNSPECIFIED', 'MALE', 'FEMALE',
    'NEUTRAL'];

    // display the SSML voice gender
    $gender = $voice->getSsmlGender();
    printf('SSML voice gender: %s' . PHP_EOL, $ssmlVoiceGender[$gender]);

    // display the natural hertz rate for this voice
    printf('Natural Sample Rate Hertz: %d' . PHP_EOL,
        $voice->getNaturalSampleRateHertz());
}

$client->close();

Python

def list_voices():
    """Lists the available voices."""
    from google.cloud import texttospeech

    client = texttospeech.TextToSpeechClient()

    # Performs the list voices request
    voices = client.list_voices()

    for voice in voices.voices:
        # Display the voice's name. Example: tpc-vocoded
        print(f"Name: {voice.name}")

        # Display the supported language codes for this voice. Example: "en-US"
        for language_code in voice.language_codes:
            print(f"Supported language: {language_code}")

        ssml_gender = texttospeech.SsmlVoiceGender(voice.ssml_gender)

        # Display the SSML Voice Gender
        print(f"SSML Voice Gender: {ssml_gender.name}")

        # Display the natural sample rate hertz for this voice. Example: 24000
        print(f"Natural Sample Rate Hertz: {voice.natural_sample_rate_hertz}\n")

Ruby

# Lists the available voices.
require "google/cloud/text_to_speech"

client = Google::Cloud::TextToSpeech.text_to_speech

# Performs the list voices request
voices = client.list_voices({}).voices

voices.each do |voice|
  # Display the voice's name. Example: tpc-vocoded
  puts "Name: #{voice.name}"

  # Display the supported language codes for this voice. Example: "en-US"
  voice.language_codes.each do |language_code|
    puts "Supported language: #{language_code}"
  end

  # Display the SSML Voice Gender
  puts "SSML Voice Gender: #{voice.ssml_gender}"

  # Display the natural sample rate hertz for this voice. Example: 24000
  puts "Natural Sample Rate Hertz: #{voice.natural_sample_rate_hertz}\n"
end