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:
- Erstellen eines benutzerdefinierten Domänennamens
- Aktivieren privater Endpunkte
- 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:
Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.
Wählen Sie die erforderliche Speech-Ressource aus.
Wählen Sie in der Gruppe Ressourcenverwaltung im linken Bereich die Option Netzwerk aus.
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.
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.
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.
- Erstellen eines privaten Endpunkts über das Azure-Portal
- Erstellen eines privaten Endpunkts mit Azure PowerShell
- Erstellen eines privaten Endpunkts mit der Azure CLI
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:
Melden Sie sich bei einem virtuellen Computer an, der sich in dem virtuellen Netzwerk befindet, an das Sie Ihren privaten Endpunkt angefügt haben.
Ö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
Ü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.
Melden Sie sich bei einem Computer an, der an ein Netzwerk angefügt ist, das auf die Ressource zugreifen darf.
Ö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 Spracherkennung-REST-API, die für Batchtranskription und Custom Speech verwendet wird.
- Die Spracherkennung-REST-API für kurze Audiodaten, die für Spracherkennung in Echtzeit verwendet wird.
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:
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 Parametervalue
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
Erstellen Sie eine
SpeechConfig
-Instanz, indem Sie eine vollständige Endpunkt-URL verwenden:Ändern Sie den festgelegten Endpunkt wie im Abschnitt Erstellen der Endpunkt-URL beschrieben.
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.
- Navigieren Sie zum Azure-Portal, und melden Sie sich bei Ihrem Azure-Konto an.
- Wählen Sie die Speech-Ressource aus.
- Wählen Sie in der Gruppe Ressourcenmanagement im linken Bereich Netzwerk>Firewalls und virtuelle Netzwerke aus.
- Wählen Sie Alle Netzwerke, Ausgewählte Netzwerke und private Endpunkte oder Deaktiviert aus.
Custom Speech, Custom Voice und Audioinhaltserstellung
Die folgende Tabelle beschreibt die Barrierefreiheit pro Speech-Ressource des Custom Speech/Custom Voice/Audioinhaltserstellung-Projekts für die Sicherheitseinstellung Netzwerk>Firewalls und virtuelle Netzwerke.
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.
Wenn Sie Custom Voice verwenden möchten, ohne Netzwerkzugriffseinschränkungen für Ihre Produktions-Speech-Ressource zu lockern, sollten Sie die Custom Voice-REST-API für alle Custom Voice-Vorgänge verwenden.
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.