Lange Audioinhalte erstellen

In diesem Dokument wird beschrieben, wie Sie lange Audioinhalte synthetisieren. Long Audio Synthese synthetisiert bis zu 1 Million Byte asynchron auf die Eingabe. Weitere Informationen zu den grundlegenden Konzepten von Text-to-Speech finden Sie unter Grundlagen von Text-to-Speech.

Hinweis

Bevor Sie eine Anfrage an die Text-to-Speech API senden können, müssen Sie die folgenden Aktionen ausgeführt haben. Weitere Informationen finden Sie auf der Seite Vorbereitung.

  • Text-to-Speech in einem GCP-Projekt aktivieren.
    1. Die Abrechnung muss für Text-to-Speech aktiviert sein.
    2. Prüfen Sie, ob Sie im GCS-Ausgabe-Bucket die folgenden IAM-Rollen (Identity and Access Management) haben.
      • Storage-Objekt-Ersteller
      • Storage-Objekt-Betrachter
  • Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

    gcloud init

Lange Audioinhalte aus Text über die Befehlszeile synthetisieren

Sie können langformatigen Text in Audioinhalte umwandeln, wenn Sie eine HTTP-POST-Anfrage an den Endpunkt https://texttospeech.googleapis.com/v1beta1/projects/{$project_number}/locations/global:synthesizeLongAudio senden. Geben Sie im Text des POST-Befehls die folgenden Felder an:

voice: Die Art der zu synthetisierenden Stimme.

input.text: Der zu synthetisierende Text.

audioConfig: Die Art der zu erstellenden Audiodaten.

output_gcs_uri: Der Pfad der GCS-Ausgabedatei unter der Form "gs://bucket_name/file_name.wav".

parent: Das übergeordnete Element unter der Form "projects/{YOUR PROJECTNUMBER}/locations/{YOUR PROJECT LOCATION}".

Die Eingabe kann bis zu 1 MB Zeichen enthalten. Die genaue Anzahl kann von verschiedenen Eingaben abweichen.

  1. Erstellen Sie unter dem Projekt, das zum Ausführen der Synthese verwendet wird, einen Google Cloud Storage-Bucket. Das zum Ausführen der Synthese verwendete Dienstkonto muss Lese-/Schreibzugriff auf den GCS-Ausgabe-Bucket haben.

  2. Führen Sie unten in der Befehlszeile die REST-Anfrage aus, um mithilfe von Text-to-Speech Audioinhalte aus Text zu synthetisieren. Der Befehl ruft mit dem Befehl gcloud auth application-default print-access-token ein Autorisierungstoken für die Anfrage ab.

    Das Dienstkonto, mit dem der GET-Vorgang ausgeführt wird, muss die Rolle „Text-to-Speech Editor“ haben.

    HTTP-Methode und URL:

    POST https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global:synthesizeLongAudio

    JSON-Text anfordern:

    {
      "parent": "projects/12345/locations/global",
      "audio_config":{
          "audio_encoding":"LINEAR16"
      },
      "input":{
          "text":"hello"
      },
      "voice":{
          "language_code":"en-us",
          "name":"en-us-Standard-A"
      },
      "output_gcs_uri": "gs://bucket_name/file_name.wav"
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

    {
      "name": "23456",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.texttospeech.v1beta1.SynthesizeLongAudioMetadata",
        "progressPercentage": 0,
        "startTime": "2022-12-20T00:46:56.296191037Z",
        "lastUpdateTime": "2022-12-20T00:46:56.296191037Z"
      },
      "done": false
    }
    

  3. Die JSON-Ausgabe für den REST-Befehl enthält den Namen des Vorgangs mit langer Ausführungszeit im Feld name. Führen Sie die REST-Anfrage unten in der Befehlszeile aus, um den Status des Vorgangs mit langer Ausführungszeit abzufragen.

    Achten Sie darauf, dass das Dienstkonto, mit dem der GET-Vorgang ausgeführt wird, aus dem Projekt stammt, das für die Synthese verwendet wird.

    HTTP-Methode und URL:

    GET https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global/operations/23456

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

    {
      "name": "projects/12345/locations/global/operations/23456",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.texttospeech.v1beta1.SynthesizeLongAudioMetadata",
        "progressPercentage": 100
      },
      "done": true
    }
    

  4. Fragen Sie die Liste aller Vorgänge ab, die in einem bestimmten Projekt ausgeführt werden. Führen Sie dazu die REST-Anfrage unten aus.

    Achten Sie darauf, dass das Dienstkonto, mit dem der LIST-Vorgang ausgeführt wird, aus dem Projekt stammt, das für die Synthese verwendet wird.

    HTTP-Methode und URL:

    GET https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global/operations

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

    {
      "operations": [
        {
          "name": "12345",
          "done": false
        },
        {
          "name": "23456",
          "done": false
        }
      ],
      "nextPageToken": ""
    }
    

  5. Wenn der Vorgang mit langer Ausführungszeit erfolgreich abgeschlossen wurde, suchen Sie im Feld output_gcs_uri des Ausgabe-URI die angegebene Audiodatei. Wenn der Vorgang nicht erfolgreich abgeschlossen wurde, können Sie den Fehler mit dem Befehl GET-REST ermitteln, den Fehler beheben und den RPC noch einmal ausführen.

Lange Audioinhalte aus Text mit Clientbibliotheken synthetisieren

Clientbibliothek installieren

Python

Bevor Sie die Bibliothek installieren, prüfen Sie, ob Sie Ihre Umgebung auf die Python-Entwicklung vorbereitet haben.

pip install --upgrade google-cloud-texttospeech

Audiodaten erstellen

Sie können mit Text-to-Speech eine lange Audiodatei mit synthetischer menschlicher Sprache erstellen. Erstellen Sie mit dem folgenden Code eine lange Audiodatei in Ihrem GCS-Bucket.

Python

Bevor Sie das Beispiel ausführen, prüfen Sie, ob Sie Ihre Umgebung auf die Python-Entwicklung vorbereitet haben.

# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from google.cloud import texttospeech

def synthesize_long_audio(project_id, location, output_gcs_uri):
    """
    Synthesizes long input, writing the resulting audio to `output_gcs_uri`.

    Example usage: synthesize_long_audio('12345', 'us-central1', 'gs://{BUCKET_NAME}/{OUTPUT_FILE_NAME}.wav')

    """
    # TODO(developer): Uncomment and set the following variables
    # project_id = 'YOUR_PROJECT_ID'
    # location = 'YOUR_LOCATION'
    # output_gcs_uri = 'YOUR_OUTPUT_GCS_URI'

    client = texttospeech.TextToSpeechLongAudioSynthesizeClient()

    input = texttospeech.SynthesisInput(
        text="Test input. Replace this with any text you want to synthesize, up to 1 million bytes long!"
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.LINEAR16
    )

    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US", name="en-US-Standard-A"
    )

    parent = f"projects/{project_id}/locations/{location}"

    request = texttospeech.SynthesizeLongAudioRequest(
        parent=parent,
        input=input,
        audio_config=audio_config,
        voice=voice,
        output_gcs_uri=output_gcs_uri,
    )

    operation = client.synthesize_long_audio(request=request)
    # Set a deadline for your LRO to finish. 300 seconds is reasonable, but can be adjusted depending on the length of the input.
    # If the operation times out, that likely means there was an error. In that case, inspect the error, and try again.
    result = operation.result(timeout=300)
    print(
        "\nFinished processing, check your GCS bucket to find your audio file! Printing what should be an empty result: ",
        result,
    )

Bereinigen

Löschen Sie das Projekt mit der Google Cloud Console, wenn Sie es nicht benötigen. Damit vermeiden Sie unnötige Kosten für die Google Cloud Platform.

Nächste Schritte