Usa i profili del dispositivo per l'audio generato

Questa pagina descrive come selezionare un profilo del dispositivo per l'audio creato dalla sintesi vocale.

Puoi ottimizzare voce sintetica prodotti da Text-to-Speech per la riproduzione su diversi tipi di hardware. Ad esempio, se l'app viene eseguita principalmente su dispositivi più piccoli, 'wearable' (indossabile) tipi di dispositivi, puoi creare sintesi vocale L'API Text-to-Speech ottimizzata specificamente per gli altoparlanti di piccole dimensioni.

Puoi anche applicare più profili di dispositivo allo stesso materiale sintetico e parlato. L'API Text-to-Speech applica i profili del dispositivo all'audio in ordine fornito nella richiesta al text:synthesize endpoint. Evita di specificare lo stesso profilo più di una volta, in quanto potresti ottenere risultati indesiderati applicando lo stesso profilo più volte.

L'utilizzo dei profili audio è facoltativo. Se scegli di utilizzarne uno (o più), Text-to-Speech applica i profili ai risultati vocali post-sintesi. Se scegli di non utilizzare un profilo audio, riceverai i risultati di sintesi vocale senza alcuna modifica post-sintesi.

Per sentire la differenza tra l'audio generato da profili diversi, confronta i due clip di seguito.


Esempio 1. Audio generato con il profilo handset-class-device


Esempio 2. Audio generato con il profilo telephony-class-application

Nota: ogni profilo audio è stato ottimizzato per un dispositivo specifico modificando una serie di effetti audio. Tuttavia, la marca e il modello del dispositivo utilizzato per ottimizzare il profilo potrebbero non corrispondere esattamente ai dispositivi di riproduzione degli utenti. Potresti dover sperimentare profili diversi per trovare il miglior output audio per la tua applicazione.

Profili audio disponibili

La tabella seguente riporta gli ID e gli esempi dei profili del dispositivo disponibili per l'utilizzo dall'API Text-to-Speech.

ID profilo audio Ottimizzato per
wearable-class-device Smartwatch e altri indossabili, come Apple Watch, smartwatch Wear OS
handset-class-device Smartphone, come Google Pixel, Samsung Galaxy, Apple iPhone
headphone-class-device Auricolari o cuffie per la riproduzione audio, come le cuffie Sennheiser
small-bluetooth-speaker-class-device Altoparlanti domestici di piccole dimensioni, come Google Home Mini
medium-bluetooth-speaker-class-device Speaker per la smart home, come Google Home
large-home-entertainment-class-device Sistemi di intrattenimento per la casa o smart TV, ad esempio Google Home Max o LG TV
large-automotive-class-device Altoparlanti per auto
telephony-class-application Sistemi di Risposta Vocale Interattiva (IVR)

Specifica un profilo audio da utilizzare

Per specificare un profilo audio da utilizzare, imposta il valore effectsProfileId per la richiesta di sintesi vocale.

Protocollo

Per generare un file audio, effettua una richiesta POST e fornisci il corpo della richiesta appropriato. Di seguito è riportato un esempio di richiesta POST mediante curl. L'esempio utilizza Google Cloud CLI per recuperare un token di accesso per la richiesta. Per istruzioni sull'installazione di gcloud CLI, consulta Esegui l'autenticazione in Text-to-Speech.

L'esempio seguente mostra come inviare una richiesta all'account Endpoint text:synthesize.

curl \
  -H "Authorization: Bearer "$(gcloud auth print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  --data "{
    'input':{
      'text':'This is a sentence that helps test how audio profiles can change the way Cloud Text-to-Speech sounds.'
    },
    'voice':{
      'languageCode':'en-us',
    },
    'audioConfig':{
      'audioEncoding':'LINEAR16',
      'effectsProfileId': ['telephony-class-application']
    }
  }" "https://texttospeech.googleapis.com/v1beta1/text:synthesize" > audio-profile.txt

Se la richiesta ha esito positivo, l'API Text-to-Speech restituisce il testo sintetizzato come dati con codifica Base64 contenuti nell'output JSON. Il file JSON L'output nel file audio-profiles.txt è simile al seguente:

{
  "audioContent": "//NExAASCCIIAAhEAGAAEMW4kAYPnwwIKw/BBTpwTvB+IAxIfghUfW.."
}

Per decodificare i risultati dell'API Cloud Text-to-Speech come file audio MP3, esegui il seguente comando dalla stessa directory del file audio-profiles.txt.

sed 's|audioContent| |' < audio-profile.txt > tmp-output.txt && \
tr -d '\n ":{}' < tmp-output.txt > tmp-output-2.txt && \
base64 tmp-output-2.txt --decode > audio-profile.wav && \
rm tmp-output*.txt

Go

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, consulta Librerie client Text-to-Speech. Per ulteriori informazioni, consulta API Go di Text-to-Speech documentazione di riferimento.

Per autenticarti a Text-to-Speech, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.


import (
	"fmt"
	"io"
	"io/ioutil"

	"context"

	texttospeech "cloud.google.com/go/texttospeech/apiv1"
	"cloud.google.com/go/texttospeech/apiv1/texttospeechpb"
)

// audioProfile generates audio from text using a custom synthesizer like a telephone call.
func audioProfile(w io.Writer, text string, outputFile string) error {
	// text := "hello"
	// outputFile := "out.mp3"

	ctx := context.Background()

	client, err := texttospeech.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient: %w", err)
	}
	defer client.Close()

	req := &texttospeechpb.SynthesizeSpeechRequest{
		Input: &texttospeechpb.SynthesisInput{
			InputSource: &texttospeechpb.SynthesisInput_Text{Text: text},
		},
		Voice: &texttospeechpb.VoiceSelectionParams{LanguageCode: "en-US"},
		AudioConfig: &texttospeechpb.AudioConfig{
			AudioEncoding:    texttospeechpb.AudioEncoding_MP3,
			EffectsProfileId: []string{"telephony-class-application"},
		},
	}

	resp, err := client.SynthesizeSpeech(ctx, req)
	if err != nil {
		return fmt.Errorf("SynthesizeSpeech: %w", err)
	}

	if err = ioutil.WriteFile(outputFile, resp.AudioContent, 0644); err != nil {
		return err
	}

	fmt.Fprintf(w, "Audio content written to file: %v\n", outputFile)

	return nil
}

Java

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, consulta Librerie client Text-to-Speech. Per ulteriori informazioni, consulta API Java di Text-to-Speech documentazione di riferimento.

Per autenticarti a Text-to-Speech, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

/**
 * Demonstrates using the Text to Speech client with audio profiles to synthesize text or ssml
 *
 * @param text the raw text to be synthesized. (e.g., "Hello there!")
 * @param effectsProfile audio profile to be used for synthesis. (e.g.,
 *     "telephony-class-application")
 * @throws Exception on TextToSpeechClient Errors.
 */
public static void synthesizeTextWithAudioProfile(String text, String effectsProfile)
    throws Exception {
  // Instantiates a client
  try (TextToSpeechClient textToSpeechClient = TextToSpeechClient.create()) {
    // Set the text input to be synthesized
    SynthesisInput input = SynthesisInput.newBuilder().setText(text).build();

    // Build the voice request
    VoiceSelectionParams voice =
        VoiceSelectionParams.newBuilder()
            .setLanguageCode("en-US") // languageCode = "en_us"
            .setSsmlGender(SsmlVoiceGender.FEMALE) // ssmlVoiceGender = SsmlVoiceGender.FEMALE
            .build();

    // Select the type of audio file you want returned and the audio profile
    AudioConfig audioConfig =
        AudioConfig.newBuilder()
            .setAudioEncoding(AudioEncoding.MP3) // MP3 audio.
            .addEffectsProfileId(effectsProfile) // audio profile
            .build();

    // Perform the text-to-speech request
    SynthesizeSpeechResponse response =
        textToSpeechClient.synthesizeSpeech(input, voice, audioConfig);

    // Get the audio contents from the response
    ByteString audioContents = response.getAudioContent();

    // Write the response to the output file.
    try (OutputStream out = new FileOutputStream("output.mp3")) {
      out.write(audioContents.toByteArray());
      System.out.println("Audio content written to file \"output.mp3\"");
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, vedi Librerie client di Text-to-Speech. Per ulteriori informazioni, consulta API Node.js di Text-to-Speech documentazione di riferimento.

Per autenticarti a Text-to-Speech, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const text = 'Text you want to vocalize';
// const outputFile = 'YOUR_OUTPUT_FILE_LOCAtION;
// const languageCode = 'LANGUAGE_CODE_FOR_OUTPUT';
// const ssmlGender = 'SSML_GENDER_OF_SPEAKER';

// Imports the Google Cloud client library
const speech = require('@google-cloud/text-to-speech');
const fs = require('fs');
const util = require('util');

// Creates a client
const client = new speech.TextToSpeechClient();

async function synthesizeWithEffectsProfile() {
  // Add one or more effects profiles to array.
  // Refer to documentation for more details:
  // https://cloud.google.com/text-to-speech/docs/audio-profiles
  const effectsProfileId = ['telephony-class-application'];

  const request = {
    input: {text: text},
    voice: {languageCode: languageCode, ssmlGender: ssmlGender},
    audioConfig: {audioEncoding: 'MP3', effectsProfileId: effectsProfileId},
  };

  const [response] = await client.synthesizeSpeech(request);
  const writeFile = util.promisify(fs.writeFile);
  await writeFile(outputFile, response.audioContent, 'binary');
  console.log(`Audio content written to file: ${outputFile}`);
}

Python

Per scoprire come installare e utilizzare la libreria client per Text-to-Speech, vedi Librerie client di Text-to-Speech. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Text-to-Speech Python.

Per autenticarti a Text-to-Speech, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

def synthesize_text_with_audio_profile():
    """Synthesizes speech from the input string of text."""
    from google.cloud import texttospeech

    text = "hello"
    output = "output.mp3"
    effects_profile_id = "telephony-class-application"
    client = texttospeech.TextToSpeechClient()

    input_text = texttospeech.SynthesisInput(text=text)

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices().
    voice = texttospeech.VoiceSelectionParams(language_code="en-US")

    # Note: you can pass in multiple effects_profile_id. They will be applied
    # in the same order they are provided.
    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.MP3,
        effects_profile_id=[effects_profile_id],
    )

    response = client.synthesize_speech(
        input=input_text, voice=voice, audio_config=audio_config
    )

    # The response's audio_content is binary.
    with open(output, "wb") as out:
        out.write(response.audio_content)
        print('Audio content written to file "%s"' % output)

Linguaggi aggiuntivi

C#: Segui le Istruzioni per la configurazione di C# Nella pagina delle librerie client e poi visita Documentazione di riferimento di Text-to-Speech per .NET.

PHP Segui le Istruzioni per la configurazione dei file PHP Nella pagina delle librerie client e poi visita Documentazione di riferimento di Text-to-Speech per PHP.

Ruby: Segui le Istruzioni per la configurazione di Ruby Nella pagina delle librerie client e poi visita Documentazione di riferimento di Text-to-Speech per Ruby.