Skip to content

Instantly share code, notes, and snippets.

@csiebler
Last active May 11, 2022 14:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save csiebler/f658cfd36854deb5a064bbb7085299e2 to your computer and use it in GitHub Desktop.
Save csiebler/f658cfd36854deb5a064bbb7085299e2 to your computer and use it in GitHub Desktop.
Synthesizing 10+ min audio via real-time Speech API
# This example shows how the real-time Speech API can be used to snythesize audio files that are longer than 10 minutes
import azure.cognitiveservices.speech as speechsdk
speech_key, service_region = "xxxxxxxxxxx", "westeurope"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)
speech_config.speech_synthesis_voice_name = "de-DE-KatjaNeural"
file_name = "outputaudio.wav"
paragraphs = [
"Der russische Energieriese Gazprom will Teile der auf Eis gelegten russisch-deutschen Gas-Pipeline Nord Stream 2 vorerst für die Versorgung der eigenen Bevölkerung nutzen. Weil die Ostseepipeline derzeit nicht genutzt werde, habe Gazprom entschieden, »die überschüssigen russischen Gastransportkapazitäten an Land für die Entwicklung der Gasversorgung in den Regionen des Nordwestens von Russland zu nutzen«, teilte das Unternehmen auf seinem Telegram-Kanal mit.",
"Die Mitteilung enthielt auch eine Warnung an Berlin: Sollte sich Deutschland entscheiden, Nord Stream 2 doch noch in Betrieb zu nehmen, könne in naher Zukunft höchstens der erste Strang der unter Wasser verlegten Trasse angeschlossen werden. Der zweite Strang sei nun nicht mehr vor 2028 zu nutzen.",
"Noch ein Paragraph zum Testen."
]
file_config = speechsdk.audio.AudioOutputConfig(filename=file_name)
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=file_config)
for p in paragraphs:
result = speech_synthesizer.speak_text_async(p).get()
if result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
print(f"Speech synthesized for text [{p}], and the audio was saved to [{file_name}]")
elif result.reason == speechsdk.ResultReason.Canceled:
cancellation_details = result.cancellation_details
print("Speech synthesis canceled: {}".format(cancellation_details.reason))
if cancellation_details.reason == speechsdk.CancellationReason.Error:
print("Error details: {}".format(cancellation_details.error_details))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment