1. Übersicht
Mit der Text-to-Speech API können Entwickler menschenähnliche Sprache generieren. Die API wandelt Text in Audioformate wie WAV, MP3 oder Ogg Opus um. Außerdem werden Eingaben in der Speech Synthesis Markup Language (SSML) unterstützt, mit denen Pausen, Zahlen, Formatierungen von Datum und Uhrzeit sowie andere Anweisungen zur Aussprache angegeben werden können.
In dieser Anleitung konzentrieren Sie sich auf die Verwendung der Text-to-Speech API mit Python.
Aufgaben in diesem Lab
- Umgebung einrichten
- Unterstützte Sprachen auflisten
- Verfügbare Stimmen auflisten
- Audioinhalte aus Text synthetisieren
Voraussetzungen
- Ein Google Cloud-Projekt
- Ein Browser wie Chrome oder Firefox
- Vertrautheit bei der Verwendung von Python
Umfrage
Wie möchten Sie diese Anleitung nutzen?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit Python bewerten?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit Google Cloud-Diensten bewerten?
<ph type="x-smartling-placeholder">2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als
PROJECT_ID
bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten. - Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.
Cloud Shell starten
Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren .
Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.
Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.
Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Umgebung einrichten
Führen Sie den folgenden Befehl in Cloud Shell aus, um die Text-to-Speech API zu aktivieren:
gcloud services enable texttospeech.googleapis.com
Auf dem Bildschirm sollte Folgendes zu sehen sein:
Operation "operations/..." finished successfully.
Jetzt können Sie die Text-to-Speech API verwenden.
Wechseln Sie zu Ihrem Basisverzeichnis:
cd ~
Erstellen Sie eine virtuelle Python-Umgebung, um die Abhängigkeiten zu isolieren:
virtualenv venv-texttospeech
Aktivieren Sie die virtuelle Umgebung:
source venv-texttospeech/bin/activate
Installieren Sie IPython und die Text-to-Speech API-Clientbibliothek:
pip install ipython google-cloud-texttospeech
Auf dem Bildschirm sollte Folgendes zu sehen sein:
... Installing collected packages: ..., ipython, google-cloud-texttospeech Successfully installed ... google-cloud-texttospeech-2.16.3 ...
Jetzt können Sie die Text-to-Speech API-Clientbibliothek verwenden.
In den nächsten Schritten verwenden Sie einen interaktiven Python-Interpreter namens IPython, den Sie im vorherigen Schritt installiert haben. Starten Sie eine Sitzung, indem Sie ipython
in Cloud Shell ausführen:
ipython
Auf dem Bildschirm sollte Folgendes zu sehen sein:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Sie können jetzt Ihre erste Anfrage stellen und die unterstützten Sprachen auflisten...
4. Unterstützte Sprachen auflisten
In diesem Abschnitt finden Sie eine Liste aller unterstützten Sprachen.
Kopieren Sie den folgenden Code in Ihre IPython-Sitzung:
from typing import Sequence
import google.cloud.texttospeech as tts
def unique_languages_from_voices(voices: Sequence[tts.Voice]):
language_set = set()
for voice in voices:
for language_code in voice.language_codes:
language_set.add(language_code)
return language_set
def list_languages():
client = tts.TextToSpeechClient()
response = client.list_voices()
languages = unique_languages_from_voices(response.voices)
print(f" Languages: {len(languages)} ".center(60, "-"))
for i, language in enumerate(sorted(languages)):
print(f"{language:>10}", end="\n" if i % 5 == 4 else "")
Nehmen Sie sich einen Moment Zeit, um sich den Code anzusehen und zu sehen, wie mit der list_voices
-Clientbibliotheksmethode die Liste der unterstützten Sprachen erstellt wird.
Rufen Sie die folgende Funktion auf:
list_languages()
Sie sollten die folgende (oder eine größere) Liste sehen:
---------------------- Languages: 58 ----------------------- af-ZA am-ET ar-XA bg-BG bn-IN ca-ES cmn-CN cmn-TW cs-CZ da-DK de-DE el-GR en-AU en-GB en-IN en-US es-ES es-US eu-ES fi-FI fil-PH fr-CA fr-FR gl-ES gu-IN he-IL hi-IN hu-HU id-ID is-IS it-IT ja-JP kn-IN ko-KR lt-LT lv-LV ml-IN mr-IN ms-MY nb-NO nl-BE nl-NL pa-IN pl-PL pt-BR pt-PT ro-RO ru-RU sk-SK sr-RS sv-SE ta-IN te-IN th-TH tr-TR uk-UA vi-VN yue-HK
Die Liste enthält 58 Sprachen und Varianten, darunter:
- Chinesisch und taiwanesisches Mandarin,
- Australisches, britisches, indisches und amerikanisches Englisch
- Französisch aus Kanada und Frankreich,
- Portugiesisch aus Brasilien und Portugal.
Diese Liste ist nicht festgelegt und wächst, wenn neue Stimmen verfügbar sind.
Zusammenfassung
Bei diesem Schritt konnten Sie die unterstützten Sprachen auflisten.
5. Verfügbare Stimmen auflisten
In diesem Abschnitt finden Sie eine Liste der in verschiedenen Sprachen verfügbaren Stimmen.
Kopieren Sie den folgenden Code in Ihre IPython-Sitzung:
import google.cloud.texttospeech as tts
def list_voices(language_code=None):
client = tts.TextToSpeechClient()
response = client.list_voices(language_code=language_code)
voices = sorted(response.voices, key=lambda voice: voice.name)
print(f" Voices: {len(voices)} ".center(60, "-"))
for voice in voices:
languages = ", ".join(voice.language_codes)
name = voice.name
gender = tts.SsmlVoiceGender(voice.ssml_gender).name
rate = voice.natural_sample_rate_hertz
print(f"{languages:<8} | {name:<24} | {gender:<8} | {rate:,} Hz")
Nehmen Sie sich einen Moment Zeit, um sich den Code anzusehen und zu sehen, wie er mit der Clientbibliotheksmethode list_voices(language_code)
die verfügbaren Stimmen für eine bestimmte Sprache auflisten kann.
Rufen Sie jetzt die Liste der verfügbaren deutschen Stimmen ab:
list_voices("de")
Auf dem Bildschirm sollte Folgendes zu sehen sein:
------------------------ Voices: 20 ------------------------ de-DE | de-DE-Neural2-A | FEMALE | 24,000 Hz de-DE | de-DE-Neural2-B | MALE | 24,000 Hz ... de-DE | de-DE-Standard-A | FEMALE | 24,000 Hz de-DE | de-DE-Standard-B | MALE | 24,000 Hz ... de-DE | de-DE-Studio-B | MALE | 24,000 Hz de-DE | de-DE-Studio-C | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-A | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-B | MALE | 24,000 Hz ...
Es sind mehrere weibliche und männliche Stimmen sowie Standardstimmen, WaveNet-, Neural2- und Studio-Stimmen verfügbar:
- Standardstimmen werden durch Signalverarbeitungsalgorithmen generiert.
- WaveNet-, Neural2- und Studio-Stimmen sind hochwertigere Stimmen, die durch Modelle für maschinelles Lernen synthetisiert werden und natürlicher klingen.
Rufen Sie jetzt die Liste der verfügbaren englischen Stimmen ab:
list_voices("en")
Die Ausgabe sollte in etwa so aussehen:
------------------------ Voices: 90 ------------------------ en-AU | en-AU-Neural2-A | FEMALE | 24,000 Hz ... en-AU | en-AU-Wavenet-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Neural2-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Wavenet-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Standard-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Wavenet-A | FEMALE | 24,000 Hz ... en-US | en-US-Neural2-A | MALE | 24,000 Hz ... en-US | en-US-News-K | FEMALE | 24,000 Hz ... en-US | en-US-Standard-A | MALE | 24,000 Hz ... en-US | en-US-Studio-M | MALE | 24,000 Hz ... en-US | en-US-Wavenet-A | MALE | 24,000 Hz ...
Zusätzlich zu einer Auswahl an Stimmen in verschiedenen Geschlechter und Qualitäten stehen mehrere Akzente zur Verfügung: australisches, britisches, indisches und amerikanisches Englisch.
Nehmen Sie sich einen Moment Zeit, um die verfügbaren Stimmen für Ihre bevorzugten Sprachen und Varianten (oder sogar für alle) aufzulisten:
list_voices("fr")
list_voices("pt")
list_voices()
Zusammenfassung
In diesem Schritt konnten Sie die verfügbaren Stimmen auflisten. Weitere Informationen zu unterstützten Stimmen und Sprachen
6. Audioinhalte aus Text synthetisieren
Mit der Text-to-Speech API können Sie einen String in Audiodaten umwandeln. Sie können die Ausgabe der Sprachsynthese auf verschiedene Arten konfigurieren, z. B. durch die Auswahl einer bestimmten Stimme oder die Modulation der Ausgabe hinsichtlich Tonhöhe, Lautstärke, Sprechgeschwindigkeit und Abtastrate.
Kopieren Sie den folgenden Code in Ihre IPython-Sitzung:
import google.cloud.texttospeech as tts
def text_to_wav(voice_name: str, text: str):
language_code = "-".join(voice_name.split("-")[:2])
text_input = tts.SynthesisInput(text=text)
voice_params = tts.VoiceSelectionParams(
language_code=language_code, name=voice_name
)
audio_config = tts.AudioConfig(audio_encoding=tts.AudioEncoding.LINEAR16)
client = tts.TextToSpeechClient()
response = client.synthesize_speech(
input=text_input,
voice=voice_params,
audio_config=audio_config,
)
filename = f"{voice_name}.wav"
with open(filename, "wb") as out:
out.write(response.audio_content)
print(f'Generated speech saved to "{filename}"')
Nehmen Sie sich einen Moment Zeit, um sich den Code anzusehen und zu sehen, wie die synthesize_speech
-Clientbibliotheksmethode verwendet wird, um die Audiodaten zu generieren und als wav
-Datei zu speichern.
Generieren Sie nun Sätze mit verschiedenen Akzenten:
text_to_wav("en-AU-Neural2-A", "What is the temperature in Sydney?")
text_to_wav("en-GB-Neural2-B", "What is the temperature in London?")
text_to_wav("en-IN-Wavenet-C", "What is the temperature in Delhi?")
text_to_wav("en-US-Studio-O", "What is the temperature in New York?")
text_to_wav("fr-FR-Neural2-A", "Quelle est la température à Paris ?")
text_to_wav("fr-CA-Neural2-B", "Quelle est la température à Montréal ?")
Auf dem Bildschirm sollte Folgendes zu sehen sein:
Generated speech saved to "en-AU-Neural2-A.wav" Generated speech saved to "en-GB-Neural2-B.wav" Generated speech saved to "en-IN-Wavenet-C.wav" Generated speech saved to "en-US-Studio-O.wav" Generated speech saved to "fr-FR-Neural2-A.wav" Generated speech saved to "fr-CA-Neural2-B.wav"
Wenn Sie alle generierten Dateien auf einmal herunterladen möchten, können Sie diesen Cloud Shell-Befehl in Ihrer Python-Umgebung verwenden:
!cloudshell download *.wav
Validieren Sie, dass die Dateien über Ihren Browser heruntergeladen werden:
Öffnen Sie die einzelnen Dateien und hören Sie sich das Ergebnis an.
Zusammenfassung
In diesem Schritt konnten Sie mithilfe der Text-to-Speech API Sätze in Audiodateien wav
konvertieren. Weitere Informationen zum Erstellen von Sprach-Audiodateien
7. Glückwunsch!
Sie haben gelernt, wie Sie mit der Text-to-Speech API in Python menschenähnliche Sprache generieren.
Bereinigen
So bereinigen Sie die Entwicklungsumgebung in Cloud Shell:
- Wenn Sie sich noch in Ihrer IPython-Sitzung befinden, gehen Sie zurück zur Shell:
exit
- Verwendung der virtuellen Python-Umgebung beenden:
deactivate
- Löschen Sie den Ordner der virtuellen Umgebung:
cd ~ ; rm -rf ./venv-texttospeech
So löschen Sie Ihr Google Cloud-Projekt in Cloud Shell:
- Rufen Sie Ihre aktuelle Projekt-ID ab:
PROJECT_ID=$(gcloud config get-value core/project)
- Achten Sie darauf, dass dies das Projekt ist, das Sie löschen möchten:
echo $PROJECT_ID
- Projekt löschen:
gcloud projects delete $PROJECT_ID
Weitere Informationen
- Testen Sie die Demo in Ihrem Browser: https://cloud.google.com/text-to-speech
- Text-to-Speech-Dokumentation: https://cloud.google.com/text-to-speech/docs
- Python in Google Cloud: https://cloud.google.com/python
- Cloud-Clientbibliotheken für Python: https://github.com/googleapis/google-cloud-python
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.