Verwenden des Speech-Diensts mithilfe eines privaten Endpunkts

Mithilfe von Azure Private Link können Sie Verbindungen mit Diensten in Azure über einen privaten Endpunkt herstellen. Ein privater Endpunkt ist eine private IP-Adresse, die nur in einem bestimmten virtuellen Netzwerk und Subnetz zugänglich ist.

In diesem Artikel wird erläutert, wie Sie Private Link und private Endpunkte mit Speech-Diensten einrichten und verwenden. In diesem Artikel wird außerdem erläutert, wie Sie private Endpunkte später entfernen, aber die Speech-Ressource weiterverwenden.

Hinweis

Bevor Sie fortfahren, informieren Sie sich über die Verwendung von virtuellen Netzwerken mit Azure KI Services.

Für die Einrichtung einer Speech-Ressource für Szenarien mit privaten Endpunkten sind folgende Tasks erforderlich:

  1. Erstellen eines benutzerdefinierten Domänennamens
  2. Aktivieren privater Endpunkte
  3. Anpassen vorhandener Anwendungen und Lösungen

Private Endpunkte und VNet-Dienstendpunkte

Azure bietet private Endpunkte und VNet-Dienstendpunkte für das Tunneln von Datenverkehr mithilfe des privaten Azure-Backbone-Netzwerks. Der Zweck und die zugrunde liegenden Technologien dieser Endpunkttypen sind ähnlich. Es gibt jedoch Unterschiede zwischen den beiden Technologien. Es wird empfohlen, dass Sie sich vor dem Entwurf Ihres Netzwerks über die Vor- und Nachteile beider Technologien informieren.

Bei der Entscheidung, welche Technologie verwendet werden soll, müssen einige Punkte berücksichtigt werden:

  • Beide Technologien stellen sicher, dass der Datenverkehr zwischen dem virtuellen Netzwerk und der Speech-Ressource nicht über das öffentliche Internet übertragen wird.
  • Ein privater Endpunkt stellt eine dedizierte private IP-Adresse für Ihre Speech-Ressource bereit. Auf diese IP-Adresse kann nur innerhalb eines bestimmten VNet und Subnetzes zugegriffen werden. Sie haben die volle Kontrolle über den Zugriff auf diese IP-Adresse innerhalb Ihrer Netzwerkinfrastruktur.
  • VNet-Dienstendpunkte stellen keine dedizierte private IP-Adresse für die Speech-Ressource zur Verfügung. Stattdessen kapseln sie alle an die Speech-Ressource gesendeten Pakete und stellen sie direkt über das Azure-Backbonenetzwerk zu.
  • Beide Technologien unterstützen lokale Szenarien. Bei Verwendung von VNet-Dienstendpunkten sind über virtuelle Netzwerke geschützte Azure-Dienstressourcen standardmäßig nicht von lokalen Netzwerken aus erreichbar. Sie können dieses Verhalten jedoch ändern.
  • VNet-Dienstpunkte werden häufig dazu verwendet, den Zugriff auf Ihre Speech-Ressource basierend auf den virtuellen Netzwerken einzuschränken, aus denen der Datenverkehr stammt.
  • Bei Azure KI Services erzwingt die Aktivierung des VNet-Dienstendpunkts, dass der Datenverkehr für alle Azure KI Services-Ressourcen über das private Backbonenetzwerk geleitet wird. Dies erfordert eine explizite Konfiguration des Netzwerkzugriffs. (Weitere Informationen finden Sie unter Konfigurieren virtueller Netzwerke und der Netzwerkeinstellungen für Speech-Ressourcen.) Private Endpunkte unterliegen nicht dieser Einschränkung und bieten mehr Flexibilität für Ihre Netzwerkkonfiguration. Sie können auf eine Ressource über das private Backbone und auf eine andere Ressource über das öffentliche Internet zugreifen, indem Sie dasselbe Subnetz desselben virtuellen Netzwerks verwenden.
  • Für private Endpunkte entstehen zusätzliche Kosten. VNet-Dienstendpunkte sind kostenlos.
  • Private Endpunkte erfordern eine zusätzliche DNS-Konfiguration.
  • Eine Speech-Ressource kann gleichzeitig mit privaten Endpunkten und VNet-Dienstendpunkten genutzt werden.

Es wird empfohlen, beide Endpunkttypen zu testen, bevor Sie eine Entscheidung für Ihren Produktionsentwurf treffen.

Weitere Informationen finden Sie in den folgenden Ressourcen:

In diesem Artikel wird die Verwendung der privaten Endpunkte mit dem Speech-Dienst beschrieben. Die Verwendung der VNet-Dienstendpunkte wird hier beschrieben.

Erstellen eines benutzerdefinierten Domänennamens

Achtung

Eine Speech-Ressource mit aktiviertem benutzerdefinierten Domänennamen interagiert auf andere Weise mit dem Speech-Dienst. Sie müssen Ihren Anwendungscode für die beiden folgenden Szenarien anpassen: mit privatem Endpunkt und ohne privaten Endpunkt.

Führen Sie diese Schritte aus, um einen benutzerdefinierten Unterdomänennamen für Azure KI Services für Ihre Speech-Ressource zu erstellen.

Achtung

Wenn Sie einen benutzerdefinierten Domänennamen aktivieren, kann der Vorgang nicht rückgängig gemacht werden. Sie können den regionalen Namen nur wiederherstellen, indem Sie eine neue Speech-Ressource erstellen.

Wenn Ihrer Speech-Ressource viele benutzerdefinierte Modelle und Projekte zugeordnet sind, die über Speech Studio erstellt wurden, wird dringend empfohlen, die Konfiguration mit einer Testressource auszuprobieren und Produktionsressourcen erst im Anschluss zu bearbeiten.

Befolgen Sie diese Schritte, um einen benutzerdefinierten Domänennamen im Azure-Portal zu erstellen:

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.

  2. Wählen Sie die erforderliche Speech-Ressource aus.

  3. Wählen Sie in der Gruppe Ressourcenverwaltung im linken Bereich die Option Netzwerk aus.

  4. Wählen Sie auf der Registerkarte Firewalls und virtuelle Netzwerke die Option Benutzerdefinierten Domänennamen generieren aus. Dadurch wird rechts ein Panel mit Anweisungen zum Erstellen einer eindeutigen benutzerdefinierten Unterdomäne für Ihre Ressource geöffnet.

  5. Geben Sie im Bereich Benutzerdefinierten Domänennamen generieren einen benutzerdefinierten Domänennamen ein. Ihre vollständige benutzerdefinierte Domäne sieht wie https://{your custom name}.cognitiveservices.azure.com aus.

    Hinweis: Nachdem Sie einen benutzerdefinierten Domänennamen erstellt haben, kann dieser nicht mehr geändert werden.

    Nachdem Sie Ihren benutzerdefinierten Domänennamen eingegeben haben, wählen Sie Speichern aus.

  6. Nachdem der Vorgang abgeschlossen ist, wählen Sie in der Gruppe Ressourcenverwaltung die Option Schlüssel und Endpunkt aus. Vergewissern Sie sich, dass der neue Endpunktname Ihrer Ressource mit https://{your custom name}.cognitiveservices.azure.com beginnt.

Aktivieren privater Endpunkte

Es wird empfohlen, die an das virtuelle Netzwerk mit den erforderlichen Updates für die privaten Endpunkte angefügte private DNS-Zone zu verwenden. Eine private DNS-Zone wird beim Bereitstellungsprozess standardmäßig erstellt. Wenn Sie einen eigenen DNS-Server verwenden, müssen Sie möglicherweise auch die DNS-Konfiguration ändern.

Sie sollten sich für eine DNS-Strategie entscheiden, bevor Sie private Endpunkte für eine Speech-Produktionsressource bereitstellen. Testen Sie Ihre DNS-Änderungen insbesondere dann, wenn Sie einen eigenen DNS-Server verwenden.

Erstellen Sie mithilfe eines der folgenden Artikel private Endpunkte. In diesen Artikeln wird eine Webanwendung als Beispielressource verwendet, die mit privaten Endpunkten aktiviert werden soll.

Verwenden Sie diese Parameter anstelle der Parameter in dem Artikel, den Sie ausgewählt haben:

Einstellung Wert
Ressourcentyp Microsoft.CognitiveServices/accounts
Resource <your-speech-resource-name>
Zielunterressource Konto

DNS für private Endpunkte: Sehen Sie sich die Grundprinzipien für DNS für private Endpunkte in Azure KI Services-Ressourcen an. Überprüfen Sie dann wie in den folgenden Abschnitten beschrieben, ob Ihre DNS-Konfiguration ordnungsgemäß funktioniert.

DNS-Auflösung über das virtuelle Netzwerk

Diese Überprüfung ist erforderlich.

Befolgen Sie diese Schritte, um den benutzerdefinierten DNS-Eintrag über Ihr virtuelles Netzwerk zu testen:

  1. Melden Sie sich bei einem virtuellen Computer an, der sich in dem virtuellen Netzwerk befindet, an das Sie Ihren privaten Endpunkt angefügt haben.

  2. Öffnen Sie die Windows-Eingabeaufforderung oder die Bash-Shell, führen Sie nslookup aus, und vergewissern Sie sich, dass der benutzerdefinierte Domänenname Ihrer Ressource erfolgreich aufgelöst wird.

    C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    my-private-link-speech.privatelink.cognitiveservices.azure.com
    Address:  172.28.0.10
    Aliases:  my-private-link-speech.cognitiveservices.azure.com
    
  3. Überprüfen Sie, ob die IP-Adresse mit der IP-Adresse Ihres privaten Endpunkts übereinstimmt.

DNS-Auflösung über andere Netzwerke

Nehmen Sie diese Überprüfung nur vor, wenn Sie die Option Alle Netzwerke oder die Zugriffsoption Ausgewählte Netzwerke und private Endpunkte im Abschnitt Netzwerk Ihrer Ressource aktiviert haben.

Wenn Sie nur über private Endpunkte auf die Ressource zugreifen, können Sie diesen Abschnitt überspringen.

  1. Melden Sie sich bei einem Computer an, der an ein Netzwerk angefügt ist, das auf die Ressource zugreifen darf.

  2. Öffnen Sie die Windows-Eingabeaufforderung oder die Bash-Shell, führen Sie nslookup aus, und vergewissern Sie sich, dass der benutzerdefinierte Domänenname Ihrer Ressource erfolgreich aufgelöst wird.

    C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
    Server:  UnKnown
    Address:  fe80::1
    
    Non-authoritative answer:
    Name:    vnetproxyv1-weu-prod.westeurope.cloudapp.azure.com
    Address:  13.69.67.71
    Aliases:  my-private-link-speech.cognitiveservices.azure.com
              my-private-link-speech.privatelink.cognitiveservices.azure.com
              westeurope.prod.vnet.cog.trafficmanager.net
    

Hinweis

Die aufgelöste IP-Adresse verweist auf einen Proxyendpunkt eines virtuellen Netzwerks, der den Netzwerkdatenverkehr an den privaten Endpunkt für die Speech-Ressource sendet. Das Verhalten unterscheidet sich bei einer Ressource mit einem benutzerdefinierter Domänennamen aber ohne private Endpunkte. Details dazu finden Sie in diesem Abschnitt.

Anpassen einer Anwendung für die Verwendung einer Speech-Ressource mit einem privaten Endpunkt

Eine Speech-Ressource, die eine benutzerdefinierte Domäne verwendet, interagiert mit Speech-Diensten auf andere Weise. Das gilt für Speech-Ressourcen mit aktivierter benutzerdefinierter Domäne mit und ohne private Endpunkte. Die Informationen in diesem Abschnitt beziehen sich auf beide Szenarios.

Befolgen Sie die Anweisungen in diesem Abschnitt, um vorhandene Anwendungen und Lösungen für die Verwendung einer Speech-Ressource mit einem benutzerdefinierten Domänennamen und einem aktivierten privaten Endpunkt anzupassen.

Eine Speech-Ressource, für die ein benutzerdefinierter Domänennamen und ein privater Endpunkt aktiviert sind, interagiert mit Speech-Diensten auf andere Weise. In diesem Abschnitt wird erläutert, wie eine solche Ressource mit der REST-API des Speech-Dienstes und dem Speech-SDK verwendet wird.

Hinweis

Eine Speech-Ressource ohne private Endpunkte, die einen benutzerdefinierten Domänennamen verwendet, interagiert ebenfalls auf besondere Weise mit Speech-Diensten. Diese unterscheidet sich vom Szenario einer Speech-Ressource mit aktivierten privaten Endpunkten. Dies ist wichtig zu beachten, da Sie möglicherweise später private Endpunkte entfernen. Weitere Informationen finden Sie weiter unten in diesem Artikel unter Anpassen einer Anwendung zur Verwendung einer Speech-Ressource ohne private Endpunkte.

Verwenden von Speech-Ressourcen mit benutzerdefiniertem Domänennamen und privatem Endpunkt: Verwendung mit den REST-APIs

In diesem Abschnitt wird my-private-link-speech.cognitiveservices.azure.com als DNS-Beispielname (benutzerdefinierte Domäne) für die Speech-Ressource verwendet.

Der Speech-Dienst umfasst REST-APIs für Spracherkennung und Sprachsynthese. Bei Szenarios mit aktivierten privaten Endpunkten muss Folgendes berücksichtigt werden:

Für die Spracherkennung gibt es zwei REST-APIs. Jede API dient einem anderen Zweck, verwendet unterschiedliche Endpunkte und erfordert einen anderen Ansatz, wenn sie in einem Szenario mit aktivierten privaten Endpunkten verwendet wird.

Die Spracherkennung-REST-APIs sind:

Die Verwendung der Spracherkennung-REST-API für kurze Audiodaten und der Sprachsynthese-REST-API ist im Szenario mit privaten Endpunkten identisch. Sie entspricht dem Speech-SDK-Ansatz, der im Verlauf dieses Artikels erläutert wird.

Die Spracherkennung-REST-API verwendet eine andere Gruppe von Endpunkten und erfordert daher einen anderen Ansatz für das Szenario mit aktivierten privaten Endpunkten.

In den nächsten Unterabschnitten werden beide Fälle erläutert.

Spracherkennung-REST-API

Speech-Ressourcen verwenden normalerweise regionale Azure KI Services-Endpunkte für die Kommunikation mit der Spracherkennungs-REST-API. Für diese Ressourcen gilt das folgende Benennungsformat:

{region}.api.cognitive.microsoft.com.

Hier sehen Sie ein Beispiel für eine Anforderungs-URL:

https://westeurope.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions

Hinweis

Informationen zu Azure Government- und Microsoft Azure-Endpunkten, betrieben von 21Vianet, finden Sie in diesem Artikel.

Nachdem Sie benutzerdefinierte Domänen für eine Speech-Ressource aktiviert haben (für private Endpunkte erforderlich), verwendet diese das folgende DNS-Namensmuster für den grundlegenden REST-API-Endpunkt:

{your custom name}.cognitiveservices.azure.com.

In diesem Beispiel lautet der Name des REST-API-Endpunkts daher:

my-private-link-speech.cognitiveservices.azure.com

Die Anforderungs-URL aus dem Beispiel muss in folgendes Format konvertiert werden:

https://my-private-link-speech.cognitiveservices.azure.com/speechtotext/v3.1/transcriptions

Diese URL sollte (bei korrekter DNS-Auflösung) von dem virtuellen Netzwerk aus erreichbar sein, dem der private Endpunkt angefügt ist.

Nach dem Aktivieren des benutzerdefinierten Domänennamens für eine Speech-Ressource ersetzen Sie in der Regel den Hostnamen in allen Anforderungs-URLs durch den neuen Hostnamen der benutzerdefinierten Domäne. Die restlichen Bestandteile der Anforderung (wie der Pfad /speechtotext/v3.1/transcriptions im obigen Beispiel) bleiben unverändert.

Tipp

Einige Kunden entwickeln Anwendungen, die die Region des DNS-Namens des regionalen Endpunkts verwenden, um beispielsweise eine Anforderung an die Speech-Ressource zu senden, die in der jeweiligen Azure-Region bereitgestellt wurde.

Der benutzerdefinierte Domänenname einer Speech-Ressource enthält keine Informationen zu der Region, in der die Ressource bereitgestellt wird. Die oben beschriebene Anwendungslogik funktioniert also nicht und muss abgeändert werden.

Spracherkennung-REST-API für kurze Audiodaten und Sprachsynthese-REST-API

Die Spracherkennung-REST-API für kurze Audiodaten und die Sprachsynthese-REST-API verwenden zwei Arten von Endpunkten:

  • Regionale Azure KI Services-Endpunkte für die Kommunikation mit der Azure KI Services-REST-API, um ein Autorisierungstoken abzurufen
  • Spezielle Endpunkte für alle sonstigen Vorgänge

Hinweis

Informationen zu Azure Government- und Azure-Endpunkten, betrieben von 21Vianet, finden Sie in diesem Artikel.

Eine ausführliche Beschreibung dieser speziellen Endpunkte und Informationen zur Transformation der URL für eine Speech-Ressource mit aktivierten privaten Endpunkten finden Sie in diesem Unterabschnitt zur Verwendung mit dem Speech-SDK. Das gleiche für das SDK beschriebene Prinzip gilt auch für die Spracherkennung-REST-API für kurze Audiodaten und die Sprachsynthese-REST-API.

Lesen Sie das Material im entsprechenden Unterabschnitt im vorherigen Absatz, und sehen Sie sich dann das folgende Beispiel an. In diesem Beispiel wird die Sprachsynthese-REST-API beschrieben. Die Verwendung der Spracherkennung-REST-API für kurze Audiodaten ist identisch.

Hinweis

Wenn Sie die Spracherkennung-REST-API für kurze Audiodaten und die Sprachsynthese-REST-API in Szenarien mit privaten Endpunkten verwenden, nutzen Sie einen Ressourcenschlüssel, der über den Ocp-Apim-Subscription-Key-Header übergeben wird. (Weitere Informationen finden Sie unter Spracherkennung-REST-API für kurze Audiodaten und Sprachsynthese-REST-API)

Das Verwenden eines Autorisierungstokens und dessen Übergabe an den speziellen Endpunkt über den Authorization-Header funktioniert nur, wenn Sie die Zugriffsoption Alle Netzwerke im Abschnitt Netzwerk Ihrer Speech-Ressource aktiviert haben. In anderen Fällen erhalten Sie entweder den Fehler Forbidden oder BadRequest, wenn Sie versuchen, ein Autorisierungstoken abzurufen.

Verwendungsbeispiel für die Sprachsynthese-REST-API

In diesem Beispiel wird „Europa, Westen“ als Azure-Region und my-private-link-speech.cognitiveservices.azure.com als DNS-Name der Speech-Ressource (benutzerdefinierte Domäne) verwendet. Der benutzerdefinierte Domänenname my-private-link-speech.cognitiveservices.azure.com in diesem Beispiel gehört zu der Ressource, die in der Region „Europa, Westen“ erstellt wurde.

Führen Sie die folgende Anforderung durch, um die Liste der unterstützten Stimmen für die Region abzurufen:

https://westeurope.tts.speech.microsoft.com/cognitiveservices/voices/list

Weitere Informationen finden Sie in der Dokumentation zur Sprachsynthese-REST-API.

Für Speech-Ressourcen mit aktivierten privaten Endpunkten muss die Endpunkt-URL für denselben Vorgang geändert werden. Die gleiche Anforderung sieht wie folgt aus:

https://my-private-link-speech.cognitiveservices.azure.com/tts/cognitiveservices/voices/list

Eine ausführliche Erläuterung finden Sie im Unterabschnitt Erstellen der Endpunkt-URL für das Speech SDK.

Verwenden von Speech-Ressourcen mit benutzerdefiniertem Domänennamen und privatem Endpunkt: Verwendung mit dem Speech-SDK

Für die Verwendung des Speech-SDK mit Speech-Ressourcen, für die benutzerdefinierte Domänennamen und private Endpunkte aktiviert sind, sind höchstwahrscheinlich ein Review und Änderungen an Ihrem Anwendungscode notwendig.

In diesem Abschnitt wird my-private-link-speech.cognitiveservices.azure.com als DNS-Beispielname (benutzerdefinierte Domäne) für die Speech-Ressource verwendet.

Erstellen der Endpunkt-URL

In SDK-Szenarien (und Szenarien mit der Spracherkennungs-REST-API für kurze Audiospuren und der Sprachsynthese-REST-API) verwenden Speech-Ressourcen in der Regel die dedizierten regionalen Endpunkte für verschiedene Dienstangebote. Das DNS-Namensformat für diese Endpunkte lautet:

{region}.{speech service offering}.speech.microsoft.com

Ein DNS-Name kann beispielsweise folgendermaßen lauten:

westeurope.stt.speech.microsoft.com

Die möglichen Werte für die Region (erstes Element des DNS-Namens) werden hier aufgeführt. (In diesem Artikel finden Sie Informationen zu Azure Government- und Azure-Endpunkten, betrieben von 21Vianet.) Die folgende Tabelle enthält die möglichen Werte für das jeweilige Speech-Dienstangebot (zweites Element des DNS-Namens):

DNS-Namenswert Speech-Angebot
commands Benutzerdefinierte Befehle
convai Besprechungstranskription
s2s Sprachübersetzung
stt Spracherkennung
tts Sprachsynthese
voice Custom Voice

Das obige Beispiel (westeurope.stt.speech.microsoft.com) steht also für den Spracherkennungsendpunkt in der Region „Europa, Westen“.

Für private Endpunkte aktivierte Endpunkte kommunizieren mit dem Speech-Dienst über einen speziellen Proxy. Daher müssen Sie die Endpunktverbindungs-URLs ändern.

Eine URL für einen „Standardendpunkt“ sieht wie folgt aus:

{region}.{speech service offering}.speech.microsoft.com/{URL path}.

Eine URL für einen privaten Endpunkt sieht wie folgt aus:

{your custom name}.cognitiveservices.azure.com/{speech service offering}/{URL path}.

Beispiel 1: Eine Anwendung kommuniziert mithilfe der folgenden URL (Spracherkennung mit Basismodell für Englisch (USA) in „Europa, Westen“):

wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US

Damit Sie die URL in einem Szenario mit aktivierten privaten Endpunkten verwenden können, in dem der benutzerdefinierte Domänenname der Speech-Ressource my-private-link-speech.cognitiveservices.azure.com lautet, müssen Sie die URL folgendermaßen anpassen:

wss://my-private-link-speech.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US

Beachten Sie die folgenden Details:

  • Der Hostname (westeurope.stt.speech.microsoft.com) wird durch den Hostnamen der benutzerdefinierten Domäne (my-private-link-speech.cognitiveservices.azure.com) ersetzt.
  • Das zweite Element des ursprünglichen DNS-Namens (stt) wird zum ersten Element des URL-Pfads und steht vor dem ursprünglichen Pfad. Die ursprüngliche URL /speech/recognition/conversation/cognitiveservices/v1?language=en-US wird folglich zu /stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Beispiel 2: Eine Anwendung verwendet die folgende URL für die Sprachsynthese in der Region „Europa, Westen“:

wss://westeurope.tts.speech.microsoft.com/cognitiveservices/websocket/v1

Im Folgenden ist eine entsprechende URL mit einem privaten Endpunkt aufgeführt, bei der der benutzerdefinierte Domänenname der Speech-Ressource my-private-link-speech.cognitiveservices.azure.com lautet:

wss://my-private-link-speech.cognitiveservices.azure.com/tts/cognitiveservices/websocket/v1

Es wird das gleiche Prinzip wie im ersten Beispiel angewendet, doch das zentrale Element ist dieses Mal tts.

Ändern von Anwendungen

Führen Sie die folgenden Schritte aus, um Ihren Code zu ändern:

  1. Bestimmen Sie die Anwendungsendpunkt-URL:

    • Aktivieren Sie die Protokollierung für Ihre Anwendung, und führen Sie die Anwendung aus, um Aktivitäten zu protokollieren.
    • Suchen Sie in der Protokolldatei nach SPEECH-ConnectionUrl. Der Parameter value in den entsprechenden Zeilen enthält die vollständige URL, die Ihre Anwendung verwendet hat, um den Speech-Dienst zu erreichen.

    Beispiel:

    (114917): 41ms SPX_DBG_TRACE_VERBOSE:  property_bag_impl.cpp:138 ISpxPropertyBagImpl::LogPropertyAndValue: this=0x0000028FE4809D78; name='SPEECH-ConnectionUrl'; value='wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?traffictype=spx&language=en-US'
    

    Die Anwendung hat in diesem Beispiel also die folgende URL verwendet:

    wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US
    
  2. Erstellen Sie eine SpeechConfig-Instanz, indem Sie eine vollständige Endpunkt-URL verwenden:

    1. Ändern Sie den festgelegten Endpunkt wie im Abschnitt Erstellen der Endpunkt-URL beschrieben.

    2. Passen Sie die Erstellung der SpeechConfig-Instanz an. Ihre Anwendung enthält wahrscheinlich eine Zeile, die der folgenden ähnelt:

      var config = SpeechConfig.FromSubscription(speechKey, azureRegion);
      

      Dieses Beispiel funktioniert für Speech-Ressourcen mit aktivierten privaten Endpunkten nicht, weil sich der Hostname und die URL wie in den vorherigen Abschnitten beschrieben ändern. Wenn Sie Ihre vorhandene Anwendung ohne Änderungen mit dem Schlüssel der Ressource mit aktivierten privaten Endpunkten verwenden, tritt ein Authentifizierungsfehler (401) auf.

      Damit dies funktioniert, müssen Sie die Instanziierung der SpeechConfig-Klasse ändern und die Initialisierung mit FromEndpoint oder WithEndpoint verwenden. Nehmen Sie an, dass die folgenden beiden Variablen definiert sind:

      • speechKey enthält den Schlüssel der Speech-Ressource, für die private Endpunkte aktiviert sind.
      • endPoint enthält die vollständige, geänderte Endpunkt-URL (mit dem Typ, der in der entsprechenden Programmiersprache erforderlich ist). In diesem Beispiel sollte die Variable den folgenden Inhalt aufweisen:
        wss://my-private-link-speech.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
        

      Erstellen Sie eine SpeechConfig-Instanz:

      var config = SpeechConfig.FromEndpoint(endPoint, speechKey);
      
      auto config = SpeechConfig::FromEndpoint(endPoint, speechKey);
      
      SpeechConfig config = SpeechConfig.fromEndpoint(endPoint, speechKey);
      
      import azure.cognitiveservices.speech as speechsdk
      config = speechsdk.SpeechConfig(endpoint=endPoint, subscription=speechKey)
      
      SPXSpeechConfiguration *config = [[SPXSpeechConfiguration alloc] initWithEndpoint:endPoint subscription:speechKey];
      
      import * as sdk from "microsoft.cognitiveservices.speech.sdk";
      config: sdk.SpeechConfig = sdk.SpeechConfig.fromEndpoint(new URL(endPoint), speechKey);
      

Tipp

Die Abfrageparameter im Endpunkt-URI werden nicht geändert – auch dann nicht, wenn sie von anderen APIs festgelegt wurden. Wenn die Erkennungssprache z. B. im URI als Abfrageparameter language=en-US definiert ist, über die entsprechende Eigenschaft aber auf ru-RU festgelegt ist, wird die Spracheinstellung im URI verwendet. Die tatsächlich verwendete Sprache ist also en-US.

Im Endpunkt-URI festgelegte Parameter haben immer Vorrang. Nur Parameter, die nicht im Endpunkt-URI angegeben sind, können von anderen APIs überschrieben werden.

Nachdem Sie diese Änderung vorgenommen haben, sollte Ihre Anwendung mit Speech-Ressourcen mit aktivierten privaten Endpunkten kompatibel sein. Eine nahtlosere Unterstützung für Szenarios mit privaten Endpunkten ist in Arbeit.

Verwendung von Speech Studio

Speech Studio ist ein Webportal mit Tools zum Erstellen und Integrieren des Azure KI Speech-Diensts in Ihrer Anwendung. Wenn Sie in Speech Studio-Projekten arbeiten, werden Netzwerkverbindungen und API-Aufrufe an die entsprechende Speech-Ressource in Ihrem Namen durchgeführt. Die Arbeit mit privaten Endpunkten, VNET-Dienstendpunkten und anderen Netzwerksicherheitsoptionen kann die Verfügbarkeit von Speech Studio-Features einschränken. Normalerweise verwenden Sie Speech Studio, wenn Sie mit Features wie Custom Speech, Benutzerdefinierte neuronale Stimme und Audioinhaltserstellung arbeiten.

Abrufen des Speech Studio-Webportals über ein virtuelles Netzwerk

Um Speech Studio von einem virtuellen Computer in einem virtuellen Azure-Netzwerk aus zu verwenden, müssen Sie ausgehende Verbindungen mit den erforderlichen Diensttags für dieses virtuelle Netzwerk zulassen. Ausführlichere Informationen finden Sie hier.

Der Zugriff auf den Speech-Ressourcenendpunkt entspricht nicht dem Zugriff auf das Speech Studio-Webportal. Der Zugriff auf das Speech Studio-Webportal über private oder VNET-Dienstendpunkte wird nicht unterstützt.

Arbeiten mit Speech Studio-Projekten

In diesem Abschnitt wird die Arbeit mit den verschiedenen Arten von Speech Studio-Projekten für die verschiedenen Sicherheitsoptionen der Speech-Ressource beschrieben. Es wird vorausgesetzt, dass die Webbrowserverbindung zu Speech Studio hergestellt ist. Die Netzwerksicherheitseinstellungen für Speech-Ressourcen werden im Azure-Portal festgelegt.

  1. Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.
  2. Wählen Sie die Speech-Ressource aus.
  3. Wählen Sie in der Gruppe Ressourcenmanagement im linken Bereich Netzwerk>Firewalls und virtuelle Netzwerke aus.
  4. Wählen Sie Alle Netzwerke, Ausgewählte Netzwerke und private Endpunkte oder Deaktiviert aus.

Custom Speech

In der folgenden Tabelle wird die Barrierefreiheit des Custom Speech-Projekts bei der Sicherheitseinstellung Netzwerk>Firewalls und virtuelle Netzwerke der Speech-Ressource beschrieben.

Hinweis

Wenn Sie nur private Endpunkte über die Registerkarte Netzwerk>Verbindungen mit privatem Endpunkt erlauben, können Sie Speech Studio nicht mit der Speech-Ressource verwenden. Sie können die Speech-Ressource weiterhin außerhalb von Speech Studio verwenden.

Netzwerksicherheitseinstellung der Speech-Ressource Barrierefreiheit des Speech Studio-Projekts
Alle Netzwerke Keine Einschränkungen
Ausgewählte Netzwerke und private Endpunkte Zugriff über zulässige öffentliche IP-Adressen möglich
Deaktiviert Nicht zugänglich

Wenn Sie Ausgewählte Netzwerke und private Endpunkte auswählen, wird die Registerkarte mit Optionen zur Zugriffskonfiguration für Virtuelle Netzwerke und die Firewall angezeigt. Im Abschnitt Firewall müssen Sie mindestens eine öffentliche IP-Adresse erlauben und diese Adresse für die Browserverbindung mit Speech Studio verwenden.

Wenn Sie den Zugriff nur über ein virtuelles Netzwerk zulassen, erlauben Sie tatsächlich keinen Zugriff auf die Speech-Ressource über Speech Studio. Sie können die Speech-Ressource weiterhin außerhalb von Speech Studio verwenden.

Um das Feature „Custom Speech“ zu verwenden, ohne die Netzwerkzugriffseinschränkungen für Ihre Speech-Produktionsressource zu lockern, sollten Sie eine dieser Problemumgehungen in Betracht ziehen.

  • Erstellen Sie eine weitere Speech-Ressource zur Entwicklung, die in einem öffentlichen Netzwerk verwendet werden kann. Bereiten Sie das benutzerdefinierte Modell in Speech Studio auf der Entwicklungsressource vor, und kopieren Sie es dann in Ihre Produktionsressource. Weitere Informationen finden Sie unter der Models_CopyTo REST-Anforderung der Spracherkennungs-REST-API.
  • Sie haben die Möglichkeit, Speech Studio nicht für das Feature „Custom Speech“ zu verwenden. Verwenden Sie die Spracherkennungs-REST-API für alle Custom Speech-Vorgänge.

Custom Voice und Audioinhaltserstellung

Sie können Custom Voice- und Audioinhaltserstellung-Projekte in Speech Studio nur verwenden, wenn die Netzwerksicherheitseinstellung für Speech-Ressourcen auf Alle Netzwerke festgelegt ist.

Anpassen einer Anwendung für die Verwendung einer Speech-Ressource ohne einen privaten Endpunkt

In diesem Artikel wurde bereits mehrfach angemerkt, dass die Aktivierung einer benutzerdefinierten Domäne für eine Speech-Ressource nicht rückgängig gemacht werden kann. Eine solche Ressource kommuniziert auf andere Weise mit dem Speech-Dienst als Ressourcen mit regionalen Endpunktnamen.

In diesem Abschnitt wird erläutert, wie Sie eine Speech-Ressource mit einem benutzerdefinierten Domänennamen, aber ohne private Endpunkte, mit den REST-APIs des Speech-Dienstes und dem Speech-SDK verwenden. Dabei kann es sich um eine Ressource handeln, die in einem Szenario mit privaten Endpunkten eingesetzt wurde, deren private Endpunkte jedoch gelöscht wurden.

DNS-Konfiguration

Rufen Sie sich ins Gedächtnis, wie der DNS-Name einer benutzerdefinierten Domäne der Speech-Ressource mit aktivierten privaten Endpunkten über öffentliche Netzwerke aufgelöst wird. In diesem Fall verweist die aufgelöste IP-Adresse auf einen Proxyendpunkt für ein virtuelles Netzwerk. Dieser Endpunkt wird zum Weiterleiten des Netzwerkdatenverkehrs an die Azure KI Services-Ressource verwendet, für die private Endpunkte aktiviert sind.

Wenn alle privaten Endpunkte einer Ressource entfernt werden (bzw. direkt nach der Aktivierung des benutzerdefinierten Domänennamens), wird der CNAME-Eintrag der Speech-Ressource erneut bereitgestellt. Dieser verweist nun auf die IP-Adresse des zugehörigen regionalen Azure KI Services-Endpunkts.

Die Ausgabe des nslookup-Befehls sieht daher wie folgt aus:

C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
Server:  UnKnown
Address:  fe80::1

Non-authoritative answer:
Name:    apimgmthskquihpkz6d90kmhvnabrx3ms3pdubscpdfk1tsx3a.cloudapp.net
Address:  13.93.122.1
Aliases:  my-private-link-speech.cognitiveservices.azure.com
          westeurope.api.cognitive.microsoft.com
          cognitiveweprod.trafficmanager.net
          cognitiveweprod.azure-api.net
          apimgmttmdjylckcx6clmh2isu2wr38uqzm63s8n4ub2y3e6xs.trafficmanager.net
          cognitiveweprod-westeurope-01.regional.azure-api.net

Vergleichen Sie diese mit der Ausgabe in diesem Abschnitt.

Verwenden einer Speech-Ressource mit benutzerdefiniertem Domänennamen und ohne private Endpunkte: Verwendung mit den REST-APIs

Spracherkennung-REST-API

Die Verwendung der Spracherkennung-REST-API ist völlig gleichwertig mit der Verwendung von Speech-Ressourcen mit aktivierten privaten Endpunkten.

Spracherkennung-REST-API für kurze Audiodaten und Sprachsynthese-REST-API

In diesem Fall unterscheiden sich die Verwendung der Spracherkennung-REST API für kurze Audiodaten und die Verwendung der Sprachsynthese-REST API nicht vom allgemeinen Fall, mit einer Ausnahme. (Beachten Sie den folgenden Hinweis.) Sie sollten beide APIs wie in den Dokumentationen Spracherkennung-REST-API für kurze Audiodaten und Sprachsynthese-REST-API beschrieben verwenden.

Hinweis

Wenn Sie die Spracherkennung-REST-API für kurze Audiodaten und die Sprachsynthese-REST-API in Szenarien mit benutzerdefinierten Domänen verwenden, nutzen Sie einen Speech-Ressourcenschlüssel, der über den Ocp-Apim-Subscription-Key-Header übergeben wird. (Weitere Informationen finden Sie unter Spracherkennung-REST-API für kurze Audiodaten und Sprachsynthese-REST-API)

Das Verwenden eines Autorisierungstokens und dessen Übergabe an den speziellen Endpunkt über den Authorization-Header funktioniert nur, wenn Sie die Zugriffsoption Alle Netzwerke im Abschnitt Netzwerk Ihrer Speech-Ressource aktiviert haben. In anderen Fällen erhalten Sie entweder den Fehler Forbidden oder BadRequest, wenn Sie versuchen, ein Autorisierungstoken abzurufen.

Verwenden einer Speech-Ressource mit benutzerdefiniertem Domänennamen und ohne private Endpunkte: Verwendung mit dem Speech-SDK

Die Verwendung des Speech SDK mit Speech-Ressourcen mit aktivierter benutzerdefinierter Domäne ohne private Endpunkte entspricht dem allgemeinen Fall, wie er in der Dokumentation zum Speech SDK beschrieben ist.

Falls Sie Ihren Code geändert haben, um ihn mit einer Speech-Ressource mit aktiviertem privaten Endpunkt zu verwenden, beachten Sie Folgendes.

Im Abschnitt zu Speech-Ressourcen mit aktivierten privaten Endpunkten wurde erläutert, wie die Endpunkt-URL bestimmt, geändert und über die Initialisierungen FromEndpoint und WithEndpoint der Klasseninstanz SpeechConfig funktionsfähig gemacht werden kann.

Wenn Sie diese Anwendung jedoch ausführen, nachdem alle privaten Endpunkte entfernt wurden (mit etwas Zeit für die erneute Bereitstellung des entsprechenden DNS-Eintrags), tritt ein interner Dienstfehler (404) auf. Das liegt daran, dass der DNS-Eintrag jetzt auf den regionalen Azure KI Services-Endpunkt anstatt auf den Proxy des virtuellen Netzwerks verweist. Dort werden URL-Pfade wie /stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US nicht gefunden.

Sie müssen ein Rollback Ihrer Anwendung auf die Standardinstanziierung von SpeechConfig im Stil des folgenden Codes ausführen:

var config = SpeechConfig.FromSubscription(speechKey, azureRegion);

Gleichzeitiges Verwenden von privaten Endpunkten und VNET-Dienstendpunkten

Sie können private Endpunkte und VNET-Dienstendpunkte für den gleichzeitigen Zugriff auf dieselbe Speech-Ressource verwenden. Für die gleichzeitige Verwendung nutzen Sie die Option Ausgewählte Netzwerke und private Endpunkte in den Netzwerkeinstellungen der Speech-Ressource im Azure-Portal. Andere Optionen werden für dieses Szenario nicht unterstützt.

Preise

Ausführliche Preisinformationen finden Sie unter Azure Private Link – Preise.

Weitere Informationen