https://a.storyblok.com/f/270183/1368x665/62443164d6/text-to-speech_asp-net_ai-studio-integration_deepgram.png

Integration von benutzerdefinierter Text-to-Speech mit Vonage AI Studio und Deepgram

Zuletzt aktualisiert am August 14, 2024

Lesedauer: 7 Minuten

Intro

AI Studio bietet eine große Auswahl an Text-to-Speech (TTS) integrierten Sprachen und Voice-Styles, erweitert durch Sprachsynthese-Markup-Sprache (SSML) zur Erstellung menschenähnlicher Äußerungen. Es gibt noch viele weitere TTS-Optionen, die Sie vielleicht stattdessen verwenden möchten. AI Studio bietet Ihnen die Flexibilität, sich mit jedem Drittanbieter zu verbinden, der über zugängliche REST-API-Endpunkte verfügt. In diesem Beitrag zeigen wir Ihnen, wie Sie AI Studio mit Deepgram verbinden können.

Ein ansprechendes, menschenähnliches TTS-Erlebnis ist für Voice-Agenten von entscheidender Bedeutung, da es eine natürliche und nachvollziehbare Interaktion fördert und den Benutzern das Gefühl gibt, verstanden und geschätzt zu werden. Dieses Maß an Engagement steigert die allgemeine Kundenzufriedenheit und -treue, da es Frustrationen reduziert und die Kommunikationseffizienz verbessert.

Dieser Blogbeitrag behandelt die Verwendung von statisch generierten Sprach-Audiodateien als Teil einer Sprechen oder Eingabe sammeln Knotens. Ein kommender Blog-Beitrag wird Folgendes behandeln dynamisch generierte Sprach-Audiodateien zur vollständigen Anpassung der Agent <> Mensch-Interaktion.

Überblick über das Projekt

In diesem Blogbeitrag erläutern wir die Verwendung von Vonage AI Studio mit einem Sprachsyntheseanbieter eines Drittanbieters anhand einer Spielzeuganwendung für elektronische Krankenakten (EHR). Wir demonstrieren einen eingehenden Anruf von einem Patienten in einer Arztpraxis. Die Studio-Anwendung ist so aufgebaut, dass sie Informationen über den Benutzer über die Calling Line ID (CLID) oder die Telefonnummer des eingehenden Benutzers sammelt. Der Studio-Agent verwendet einen Webhook, um Informationen über den Patienten zu sammeln, z. B. den Vor- und Nachnamen des Patienten, die Patientenidentifikationsnummer und ob Termine geplant sind oder nicht. Die Begrüßung des Benutzers erfolgt mit dem Deepgram Aura TTS-Modell begrüßt.

Voraussetzungen

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

Wie man einen Voice Agent erstellt

Schritt 1: Erstellen Sie Ihren Agenten

Vom AI Studio Dashboardwählen Sie Agent erstellen. Da es sich um einen Voice-Anwendungsfall handelt, wählen Sie "Telephony".

ai-studio_agent_typeSelect Agent Type

Schritt 2: Konfigurieren Sie Ihren Agenten

Die Konfiguration des Agenten ist ein notwendiger erster Schritt. Weitere Informationen finden Sie hier. In unserem Fall stellen wir einige grundlegende Agentenkonstrukte bereit, darunter die Lokalisierung, die Zuordnung des Agenten zu einem bestimmten API-Schlüssel oder Unterkonto und die Sprache für den Agenten.

ai_studio_agent_detailsAgent DetailsBitte beachten Sie, dass der Voice/Telefonie-Agent erfordert dass Sie eine Voice auswählen. Dieses Konfigurationskonstrukt ist jedoch nicht relevant, da wir die Stimmen von Drittanbietern (Deepgram) verwenden werden. Ihr Account wird in diesem Fall nicht für die Nutzung von Vonage TTS belastet, solange Sie die hier genannten Ansätze verwenden.

Schritt 3: Wählen Sie Ihre Vorlage

Wählen Sie die Vorlage "Anruferidentifizierung".. Wir werden die Rufnummer (CLID) des Anrufers verwenden, um eine individuelle Begrüßung zu erstellen. Diese Vorlage bietet Ihnen einen guten Ausgangspunkt.

Choose a TemplateChoose a TemplateSchritt 4: Wählen Sie Eingehender Anruf

Wählen Sie den Eingehender Anruf Option. Unser Voice-Agent wird auf eingehende Anrufe reagieren, ist aber nicht auf eingehende Anrufe beschränkt. Wenn Sie z. B. nach Abschluss des Gesprächs mit dem Agenten eine Follow-up-E-Mail senden möchten, können Sie dies im Rahmen der Option Eingehender Anruf Ablaufs. Erfahren Sie mehr über AI Studio Konversationsereignisse.

Choose Inbound CallChoose Inbound Call

Voilà, Sie sind bereit, Ihren Voice-Agenten mit den individuellen Stimmen von Deepgram zu erstellen. Los geht's!

Integration von Text-To-Speech-Audiodateien in AI Studio

Es ist wichtig zu verstehen, dass in einem Telefonie-Agenten zwei Knoten für benutzerdefinierte TTS verwendet werden können. Sie können mehr über die Sprechen Knoten und dem Eingabe sammeln können Sie unter den Links nachlesen. Wir werden uns auf den Eingaben sammeln Knoten für diesen Blogbeitrag. In meinem Agenten gibt es, wie beschrieben, mehrere Knoten, mit denen der Anrufer interagiert, bevor er auf den Eingabe sammeln Knoten stößt. Siehe unten:

Basic Flow InitiationBasic Flow Initiation

Sie können die folgenden Knoten sehen, mit denen der Aufrufer interagiert.

  1. Die Start Knoten.

  2. Der patient_webhook Knoten wird verwendet, um Informationen über den Anrufer aus der Backend-Datenbank in der EHR zu sammeln.

  3. Ein bedingter Knoten namens Vorhandener_Patient wird verwendet, um zu bestimmen, in welchen Fluss der Benutzer als nächstes geschickt werden soll. In diesem Fall, da der Webhook-Knoten den eingehenden Anrufer einem bestehenden Patienten zuordnet (über die ANRUFER_TELEFONNUMMER vordefinierten Parameter), wird der Anrufer in einen Fluss weitergeleitet, der eine Selbstbedienungsautomatisierung für die Erstellung, Aktualisierung und Stornierung von Terminen sowie Selbstbedienungsanfragen für die Wiederauffüllung von Rezepten bietet.

  4. Der Vorhandene_Patient Eingabe sammeln wird verwendet, um die vordefinierte Ansage abzuspielen, die von Deepgram bezogen wurde.

Mit diesem Ansatz können Konversationsdesigner Sprachaudiodateien mit dem API-Endpunkt eines beliebigen Anbieters erstellen und die zurückgegebene Datei in einer Eingabe sammeln Knoten verwenden.

Wie man mit Deepgram benutzerdefinierte Text-zu-Sprache-Audiodateien erstellt

Erzeugen Sie programmatisch synthetisierte Audiodaten mithilfe der API eines TTS-Anbieters (z. B. Deepgram) oder über dessen Benutzeroberfläche. Diese werden als binärer Stream an Ihre Anwendung zurückgegeben, und Sie können den Stream mit der Dateierweiterung .mp3 kodieren. Im Folgenden finden Sie eine Beispielanwendung, mit der Sie Audiodateien über Deepgrams Aura Endpunkt erstellen kann.

Erfahren Sie, wie Sie beginnen können mit Deepgrams Aura Text-to-Speech API.

Anfragen importieren
os importieren
from os.path import join, dirname
from dotenv import load_dotenv
from speech_patterns import SPEECH_PATTERNS


dotenv_pfad = join(dirname(__file__), ".env")
load_dotenv(dotenv_pfad)

deepgram_password = os.environ.get('deepgram_password')
deepgram_url = "https://api.deepgram.com/v1/speak?model=aura-asteria-en"
headers = {
    "Content-Type": "application/json",
    "Authorization": f "Token {deepgram_password}"  }

def deepgram_tts():
    print("Starten des Prozesses")
    '''
    Sendet Textstrings an Deepgram zur Sprachsynthese und speichert die zurückgegebenen MP3-Dateien.
    '''

    for key, text in SPEECH_PATTERNS.items():
        print(f "Processing key: {key}")
        payload = {"text": text}
        response = requests.post(deepgram_url, headers=headers, json=payload)
        print(response.headers)

        if response.status_code == 200:
            filename = f"{key}.mp3"
            # Stellen Sie sicher, dass Sie `response.content` für binäre Inhalte verwenden!
            with open(filename, 'wb') as file:
                file.write(response.content)
            print(f "Datei erfolgreich als {Dateiname} gespeichert.")
        else:
            print(f "Fehler: {response.status_code} - {response.text}")


if __name__ == "__main__":
    deepgram_tts()

Hinweis: Im obigen Code ist der Import von sprach_mustern importieren SPRACHMUSTER ist ein Verweis auf eine zugehörige Datei, die alle gewünschten Sprachmuster enthält, die in diesem Format an Deepgram gesendet werden sollen:

SPEECH_PATTERNS = {
    "system_greeting": "Hallo und willkommen bei Stonebridge Dermatology and Aesthetics",
    "patient_query": "Hallo, schön, dass Sie wieder bei uns sind... Was möchten Sie heute erreichen?",
    "repeat_query": "Das habe ich nicht verstanden...Würden Sie bitte noch einmal Ihr Anliegen vortragen oder einfach die entsprechende Ziffer mit Ihrem Telefon eingeben?",
    "type_of_appointment": "Großartig!  Welche Art von Termin möchten Sie vereinbaren?  Wenn Sie einen Arzt aufsuchen, sagen Sie bitte entweder Arzt oder Ärztin oder worum es Ihnen geht.  Sie könnten zum Beispiel Hautkrebs sagen.  Für einen Termin bei einem Ästhetiker sagen Sie bitte entweder Ästhetiker oder Berater oder den Namen der Behandlung, die Sie sich vorstellen.",
    "request_for_date": "Verstanden, haben Sie einen Wunschtermin im Kopf?",
    "appointment_time": "Nennen Sie mir jetzt bitte einen Termin, der Ihnen passt.",
    "appointment_coordination": "Sehr gut, danke!  Bitte warten Sie einen Moment, während ich im System nachsehe, ob der Termin verfügbar ist.",
    "termin_bestätigung": "Perfekt.  Ich habe Ihren neuen Termin.  Ich werde Ihnen eine weitere E-Mail mit den Informationen schicken.  Wir würden uns freuen, Sie bei Ihrem Termin zu sehen.  Gibt es sonst noch etwas, womit ich Ihnen helfen kann?"
}

Nachdem Sie die oben genannte Anwendung ausgeführt haben, erhalten Sie die entsprechenden .mp3-Dateien, die Sie nun in AI Studio hochladen können.

So fügen Sie Audiodateien zu AI Studio hinzu

Schritt 1: Speichern der Benutzereingaben in einem Parameter

Navigieren Sie zum Knoten Eingaben sammeln. Da ich einen Selbstbedienungsagenten für Patienten von Ärzten und Fachärzten zum Anlegen und Ändern von Terminen erstellt habe, werde ich diesen Knoten mit "(Bestehender Patient) entsprechend: Datum und Uhrzeit des Termins festlegen." Dieser Knoten sammelt die Benutzerinformationen, die zur Festlegung des Termins benötigt werden. Genauer gesagt, sammle ich das vom Benutzer bevorzugte Datum und die Uhrzeit für einen Termin und weise sie einem Parameter namens zu. APPT_DATE. Dieser Parameter wird im weiteren Verlauf des Ablaufs verwendet.

Collect Input NodeCollect Input Node

Schritt 2: Hochladen der Audiodateien

Wählen Sie die Optionsschaltfläche "Audio". Daraufhin wechselt die Ansicht zu einem Menü mit Sprachansagen.

Select “Recording” for PromptSelect “Recording” for PromptWählen Sie unter dem Abschnitt Aufforderung die Option "Aufnahme". Nun fügen Sie die Datei aus Ihrem lokalen Speicher in den integrierten Dateispeicher von AI Studio ein oder verwenden eine vorhandene Audiodatei, die bereits in AI Studio gespeichert wurde. In meinem Fall habe ich bereits mehrere Dateien, die ich hochgeladen habe, aber Sie können die Funktion +Aufnahme hinzufügen um eine neue Aufnahme hinzuzufügen.

Prompt designation - Select Recording

Sobald Sie diesen Schritt abgeschlossen haben, zeigt das Modal an, dass Sie eine Aufnahme ausgewählt haben, die dem Benutzer vorgespielt wird (siehe unten). Eine weitere praktische Funktion ist, dass Sie die tatsächliche Transkription der Datei sehen können (bereitgestellt von Vonage AI). Diese UI-Visualisierung stellt sicher, dass Sie die Audiodateien Ihren Flussknoten richtig zuordnen.

Recording SelectedRecording Selected

Schritt 3: Andere Knotenpunkte konfigurieren

Sie können dann die anderen Funktionen dieses Knotens wie gewohnt nutzen. Zum Beispiel:

  1. Legen Sie die Anzahl der Wiederholungsversuche fest (wie oft die Aufnahme abgespielt wird)

  2. Legen Sie eine Wiederholungsaufforderung fest (z. B. wenn Sie möchten, dass der Agent als zweite Aufforderung "Es tut mir leid, ich habe das nicht gehört" ausspricht).

  3. Eingabe der Antwort des Anrufers: Ermöglicht die Festlegung einer Sprachantwort, einer DTMF-Antwort oder beider.

  4. Darüber hinaus gibt es einige Verfeinerungen der natürlichen Sprache, die Sie vielleicht hinzufügen möchten, damit der Agent auf Ihre benutzerdefinierten Anwendungsfallkontext-Schlüsselwörter usw. "trainiert" wird.

Achten Sie darauf, dass Sie auf die Schaltfläche "Speichern & Beenden" klicken, und voila! Sie haben nun eine angepasste TTS, mit der Sie Ihren Agenten weiter personalisieren können.

Schlussfolgerung

Heute integrieren viele TTS-Anbieter LLMs in ihre Sprachsynthese-Pipelines, was eine natürlichere und ausdrucksvollere Sprache ermöglicht. Früher wurde TTS vor allem durch Methoden wie die konkatenative Synthese, bei der vorab aufgezeichnete Sprachschnipsel zusammengefügt wurden, und die parametrische Synthese, bei der statistische Modelle wie Hidden Markov Models (HMMs) verwendet wurden, betrieben. Diese früheren Techniken führten oft zu eher roboterhaften und weniger nuancierten Stimmen.

LLMs verbessern die Sprachsynthese, indem sie große Datenmengen und fortschrittliche neuronale Netzwerkarchitekturen nutzen, um menschenähnliche Sprachmuster zu verstehen und zu erzeugen. Sie analysieren Text nach Kontext, Stimmung und natürlichem Sprachrhythmus und ermöglichen so eine genauere Intonation, Betonung und Emotion in der erzeugten Sprache. Das Ergebnis sind Stimmen, die nicht nur klarer und angenehmer zu hören sind, sondern auch in der Lage sind, subtile Emotionen und eine natürliche Gesprächsdynamik zu vermitteln, was das Nutzererlebnis insgesamt deutlich verbessert.

In diesem Blog-Beitrag haben wir untersucht, wie man Text-to-Speech (TTS)-Anbieter von Drittanbietern in Verbindung mit AI Studio nutzen kann, um das Benutzererlebnis vollständig anzupassen. Wir freuen uns immer über die Beteiligung der Community. Bitte schließen Sie sich uns auf GitHub und der Vonage Community Slack.

Teilen Sie:

https://a.storyblok.com/f/270183/398x436/1c09fedd7d/tim-dentry.jpg
Tim DentryArchitekt für Kundenlösungen im Gesundheitswesen

Tim ist Architekt für Kundenlösungen im Gesundheitswesen und ein leidenschaftlicher KI/ML-Enthusiast, insbesondere im Bereich der natürlichen Sprachverarbeitung/des Verständnisses und der Wissensgraphen. In seiner Freizeit reist er gerne um die Welt, forscht auf dem Gebiet der KI und ist Turniertänzer.