프라이빗 엔드포인트를 통해 Speech Service 사용

Azure Private Link를 사용하면 프라이빗 엔드포인트를 사용하여 Azure의 서비스에 연결할 수 있습니다. 프라이빗 엔드포인트는 특정 가상 네트워크 및 서브넷 내에서만 액세스할 수 있는 개인 IP 주소입니다.

이 문서에서는 음성 서비스에서 Private Link 및 프라이빗 엔드포인트를 설정하고 사용하는 방법을 설명합니다. 그런 다음 이 문서에서는 나중에 프라이빗 엔드포인트를 제거하지만 여전히 Speech 리소스를 사용하는 방법을 설명합니다.

참고 항목

계속하기 전에 Azure AI 서비스에서 가상 네트워크를 사용하는 방법을 검토합니다.

프라이빗 엔드포인트 시나리오에 대한 음성 리소스를 설정하려면 다음 작업을 수행해야 합니다.

  1. 사용자 지정 도메인 이름 만들기
  2. 프라이빗 엔드포인트 설정
  3. 기존 애플리케이션 및 솔루션 조정

프라이빗 엔드포인트 및 가상 네트워크 서비스 엔드포인트

Azure는 프라이빗 Azure 백본 네트워크를 통해 터널링되는 트래픽에 대해 프라이빗 엔드포인트 및 가상 네트워크 서비스 엔드포인트를 제공합니다. 이러한 엔드포인트 유형의 목적과 기본 기술은 비슷합니다. 그러나 두 기술 사이에는 차이점이 있습니다. 네트워크를 설계하기 전에 두 가지의 장단점에 대해 알아보는 것이 좋습니다.

사용할 기술을 결정할 때 고려해야 할 몇 가지 사항이 있습니다.

  • 두 기술 모두 가상 네트워크와 음성 리소스 간의 트래픽이 공용 인터넷을 통해 이동하지 않도록 합니다.
  • 프라이빗 엔드포인트는 음성 리소스에 전용 개인 IP 주소를 제공합니다. 이 IP 주소는 특정 가상 네트워크 및 서브넷 내에서만 액세스할 수 있습니다. 네트워크 인프라 내에서 이 IP 주소에 대한 액세스를 완전히 제어할 수 있습니다.
  • 가상 네트워크 서비스 엔드포인트는 음성 리소스에 대한 전용 개인 IP 주소를 제공하지 않습니다. 대신 음성 리소스로 전송된 모든 패킷을 캡슐화하고 Azure 백본 네트워크를 통해 직접 전달합니다.
  • 두 기술 모두 온-프레미스 시나리오를 지원합니다. 기본적으로 가상 네트워크 서비스 엔드포인트를 사용하는 경우 가상 네트워크에 보호되는 Azure 서비스 리소스는 온-프레미스 네트워크에서 연결할 수 없습니다. 하지만 이 동작을 변경할 수 있습니다.
  • 가상 네트워크 서비스 엔드포인트는 트래픽이 시작되는 가상 네트워크를 기반으로 음성 리소스에 대한 액세스를 제한하는 데 자주 사용됩니다.
  • Azure AI 서비스의 경우 Virtual Network 서비스 엔드포인트를 사용하도록 설정하면 모든 Azure AI 서비스 리소스에 대한 트래픽이 프라이빗 백본 네트워크를 통과하게 됩니다. 이렇게 하려면 명시적인 네트워크 액세스 구성이 필요합니다. (자세한 내용은 가상 네트워크 및 음성 리소스 네트워킹 설정 구성을 참조하세요.) 프라이빗 엔드포인트에는 이 제한이 없으며 네트워크 구성에 더 많은 유연성을 제공합니다. 동일한 가상 네트워크의 동일한 서브넷을 사용하여 프라이빗 백본을 통해 하나의 리소스에 액세스하고 공용 인터넷을 통해 다른 리소스에 액세스할 수 있습니다.
  • 프라이빗 엔드포인트에는 추가 비용이 발생합니다. Virtual Network 서비스 엔드포인트는 무료입니다.
  • 프라이빗 엔드포인트에는 추가 DNS 구성이 필요합니다.
  • 하나의 음성 리소스는 프라이빗 엔드포인트 및 가상 네트워크 서비스 엔드포인트 모두에서 동시에 작동할 수 있습니다.

프로덕션 디자인에 대한 결정을 내리기 전에 두 엔드포인트 유형을 모두 시도하는 것이 좋습니다.

자세한 내용은 다음 리소스를 참조하세요.

이 문서에서는 Speech Service에서 프라이빗 엔드포인트를 사용하는 방법을 설명합니다. VNet 서비스 엔드포인트의 사용법은 여기에 설명되어 있습니다.

사용자 지정 도메인 이름 만들기

주의

사용자 지정 도메인 이름이 활성화된 음성 리소스는 다른 방법을 사용하여 Speech Service와 상호 작용합니다. 프라이빗 엔드포인트 사용프라이빗 엔드포인트 사용 안 함의 두 시나리오 모두에 대해 애플리케이션 코드를 조정해야 할 수 있습니다.

음성 리소스에 대한 Azure AI 서비스용 사용자 지정 하위 도메인 이름을 만들려면 다음 단계를 따릅니다.

주의

사용자 지정 도메인 이름을 설정하면 작업을 되돌릴 수 없습니다. 지역 이름으로 되돌리는 유일한 방법은 새 음성 리소스를 만드는 것입니다.

Speech 리소스에 Speech Studio를 통해 생성된 많은 관련 사용자 지정 모델 및 프로젝트가 있는 경우 프로덕션에 사용되는 리소스를 수정하기 전에 테스트 리소스로 구성을 시도하는 것이 좋습니다.

Azure Portal을 사용하여 사용자 지정 도메인 이름을 만들려면 다음 단계를 따릅니다.

  1. Azure Portal로 이동하여 Azure 계정에 로그인합니다.

  2. 필요한 Speech 리소스를 선택합니다.

  3. 왼쪽 창의 리소스 관리 그룹에서 네트워킹을 선택합니다.

  4. 방화벽 및 가상 네트워크 탭에서 사용자 지정 도메인 이름 생성을 선택합니다. 리소스에 대한 고유한 사용자 지정 하위 도메인을 만드는 지침이 포함된 새 패널이 오른쪽에 나타납니다.

  5. 사용자 지정 도메인 이름 생성 패널에서 사용자 지정 도메인 이름을 입력합니다. 전체 사용자 지정 도메인의 형식은 다음과 같습니다. https://{your custom name}.cognitiveservices.azure.com

    사용자 지정 도메인 이름을 만든 후에는 변경할 수 없습니다.

    사용자 지정 도메인 이름을 입력한 후 저장을 선택합니다.

  6. 작업이 완료되면 리소스 관리 그룹에서 키 및 엔드포인트를 선택합니다. 리소스의 새 엔드포인트 이름이 https://{your custom name}.cognitiveservices.azure.com 형식으로 시작하는지 확인합니다.

프라이빗 엔드포인트 설정

프라이빗 엔드포인트에 필요한 업데이트와 함께 가상 네트워크에 연결된 프라이빗 DNS 영역을 사용하는 것이 좋습니다. 프로비저닝 프로세스 중에 프라이빗 DNS 영역을 만들 수 있습니다. 자체 DNS 서버를 사용하는 경우 DNS 구성을 변경해야 할 수도 있습니다.

프로덕션 Speech 리소스에 대한 프라이빗 엔드포인트를 프로비저닝하기 전에 DNS 전략을 결정합니다. 특히 자체 DNS 서버를 사용하는 경우 DNS 변경 사항을 테스트합니다.

다음 문서 중 하나를 사용하여 프라이빗 엔드포인트를 만듭니다. 이러한 문서에서는 프라이빗 엔드포인트를 통해 사용할 수 있도록 웹앱을 샘플 리소스로 사용합니다.

선택한 문서의 매개 변수 대신 다음 매개 변수를 사용합니다.

설정
리소스 종류 Microsoft.CognitiveServices/accounts
리소스 <your-speech-resource-name>
대상 하위 리소스 거래처

프라이빗 엔드포인트용 DNS:Azure AI 서비스 리소스의 프라이빗 엔드포인트용 DNS 일반 원칙을 검토합니다. 그런 다음 아래 섹션에 설명된 검사를 수행하여 DNS 구성이 올바르게 작동하는지 확인합니다.

가상 네트워크에서 DNS 확인

이 확인은 필수입니다.

다음 단계에 따라 가상 네트워크에서 사용자 지정 DNS 항목을 테스트합니다.

  1. 프라이빗 엔드포인트를 연결한 가상 네트워크에 있는 가상 머신에 로그인합니다.

  2. Windows 명령 프롬프트 또는 Bash 셸을 열고 nslookup을 실행하여 리소스의 사용자 지정 도메인 이름이 성공적으로 확인되는지 봅니다.

    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. IP 주소가 프라이빗 엔드포인트의 IP 주소와 일치하는지 확인합니다.

다른 네트워크에서 DNS 확인

리소스의 네트워킹 섹션에서 모든 네트워크 옵션 또는 선택한 네트워크 및 프라이빗 엔드포인트 액세스 옵션을 설정한 경우에만 이 확인을 수행합니다.

프라이빗 엔드포인트만 사용하여 리소스에 액세스하려는 경우 이 섹션을 건너뛸 수 있습니다.

  1. 리소스에 액세스할 수 있는 네트워크에 연결된 컴퓨터에 로그인합니다.

  2. Windows 명령 프롬프트 또는 Bash 셸을 열고 nslookup을 실행하여 리소스의 사용자 지정 도메인 이름이 성공적으로 확인되는지 봅니다.

    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
    

참고 항목

확인된 IP 주소는 음성 리소스에 대한 프라이빗 엔드포인트로 네트워크 트래픽을 디스패치하는 가상 네트워크 프록시 엔드포인트를 가리킵니다. 사용자 지정 도메인 이름은 사용하지만 프라이빗 엔드포인트는 사용하지 않는 리소스의 경우 동작이 다릅니다. 자세한 내용은 이 섹션을 참조하세요.

프라이빗 엔드포인트를 사용하는 Speech 리소스를 사용하도록 애플리케이션 조정

사용자 지정 도메인이 있는 음성 리소스는 다른 방식으로 음성 서비스와 상호 작용합니다. 이는 프라이빗 엔드포인트 사용 여부에 관계없이 custom-domain-enabled Speech 리소스에 적용됩니다. 이 섹션의 정보는 두 시나리오에 모두 적용됩니다.

이 섹션의 지침에 따라 사용자 지정 도메인 이름 및 프라이빗 엔드포인트가 설정된 Speech 리소스를 사용하도록 기존 애플리케이션 및 솔루션을 조정합니다.

사용자 지정 도메인 이름과 프라이빗 엔드포인트가 설정된 음성 리소스는 음성 서비스와 상호 작용하는 데 다른 방법을 사용합니다. 이 섹션에서는 이러한 리소스를 음성 서비스 REST API 및 음성 SDK와 함께 사용하는 방법을 설명합니다.

참고 항목

사용자 지정 도메인 이름은 사용하고 프라이빗 엔드포인트는 사용하지 않는 음성 리소스도 특별한 방법을 통해 음성 서비스와 상호 작용할 수 있습니다. 이 방법은 프라이빗 엔드포인트를 사용하는 Speech 리소스의 시나리오와 다릅니다. 나중에 프라이빗 엔드포인트를 제거할 수도 있으므로 이 방법을 알아두는 것이 좋습니다. 이 문서 뒷부분의 프라이빗 엔드포인트를 사용하지 않는 Speech 리소스를 사용하도록 애플리케이션 조정을 참조하세요.

사용자 지정 도메인 이름 및 프라이빗 엔드포인트를 사용하는 Speech 리소스: REST API 사용

이 섹션에서는 my-private-link-speech.cognitiveservices.azure.com을 샘플 Speech 리소스 DNS 이름(사용자 지정 도메인)으로 사용합니다.

음성 서비스에는 음성 텍스트 변환텍스트 음성 변환용 REST API가 있습니다. private-endpoint-enabled 시나리오에 대해서는 다음 정보를 고려합니다.

음성 텍스트 변환에는 두 개의 REST API가 있습니다. 각 API는 서로 다른 용도로 사용되고 서로 다른 엔드포인트를 사용하므로 private-endpoint-enabled 시나리오에서 사용할 때 다른 접근 방식이 필요합니다.

음성 텍스트 변환 REST API는 다음과 같습니다.

프라이빗 엔드포인트 시나리오에서의 짧은 오디오용 음성 텍스트 변환 REST API와 텍스트 음성 변환 REST API 사용은 동일합니다. 이 문서의 뒷부분에서 설명하는 Speech SDK 사례와 동일합니다.

음성 텍스트 변환 REST API는 다른 엔드포인트 집합을 사용하므로 private-endpoint-enabled 시나리오에 대해 다른 접근 방식이 필요합니다.

다음 하위 섹션에서는 두 경우 모두에 대해 설명합니다.

음성 텍스트 변환 REST API

일반적으로 음성 리소스는 음성 텍스트 변환 REST API와 통신하기 위해 Azure AI 서비스 지역 엔드포인트를 사용합니다. 이러한 리소스에는

{region}.api.cognitive.microsoft.com과 같은 이름 지정 형식이 있습니다.

다음은 샘플 요청 URL입니다.

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

참고 항목

Azure Government 및 21Vianet에서 운영하는 Microsoft Azure 엔드포인트에 대해서는 이 문서를 참조하세요.

음성 리소스(프라이빗 엔드포인트에 필요)에 사용자 지정 도메인을 설정하면 해당 리소스는 기본 REST API 엔드포인트에

{your custom name}.cognitiveservices.azure.com과 같은 DNS 이름 패턴을 사용합니다.

즉 이 예에서 REST API 엔드포인트 이름은

my-private-link-speech.cognitiveservices.azure.com입니다.

그리고 샘플 요청 URL을 다음으로 변환해야 합니다.

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

이 URL은 프라이빗 엔드포인트가 연결된 가상 네트워크에서 도달할 수 있어야 합니다(올바른 DNS 확인 제공).

Speech 리소스에 대해 사용자 지정 도메인 이름을 설정한 후 일반적으로 모든 요청 URL의 호스트 이름을 새 사용자 지정 도메인 호스트 이름으로 바꿉니다. 요청의 다른 모든 부분(이전 예의 경로 /speechtotext/v3.1/transcriptions와 같음)은 동일하게 유지됩니다.

일부 고객은 지역 엔드포인트 DNS 이름의 지역 부분을 사용하는 애플리케이션을 개발합니다(예: 특정 Azure 지역에 배포된 Speech 리소스에 요청을 보내기 위해).

Speech 리소스의 사용자 지정 도메인에는 리소스가 배포된 지역에 대한 정보가 없습니다. 따라서 앞에서 설명한 애플리케이션 논리가 작동하지 않으므로 변경해야 합니다.

짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API

짧은 오디오용 음성 텍스트 변환 REST API텍스트 음성 변환 REST API는 두 가지 유형의 엔드포인트를 사용합니다.

참고 항목

Azure Government 및 21Vianet에서 운영하는 Azure 엔드포인트에 대해서는 이 문서를 참조하세요.

특수 엔드포인트에 대한 자세한 설명과 private-endpoint-enabled Speech 리소스를 위해 URL을 변환하는 방법은 이 하위 섹션에서 Speech SDK 사용에 대한 내용을 참조하세요. 짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API에는 SDK에 대해 설명된 동일한 원칙이 적용됩니다.

이전 단락에서 언급한 하위 섹션의 자료를 숙지하고 다음 예를 참조하세요. 이 예에서는 텍스트 음성 변환 REST API에 대해 설명합니다. 짧은 오디오용 음성 텍스트 변환 REST API 사용 방법도 완전히 동일합니다.

참고 항목

짧은 오디오용 음성 텍스트 변환 REST API를 사용하고 프라이빗 엔드포인트 시나리오에서 텍스트 음성 변환 REST API를 사용하는 경우 Ocp-Apim-Subscription-Key 헤더를 통해 전달된 리소스 키를 사용합니다. (자세한 내용은 짧은 오디오용 음성 텍스트 변환 REST API텍스트 음성 변환 REST API 참조)

권한 부여 토큰을 사용하고 Authorization 헤더를 통해 특수 엔드포인트로 전달하는 것은 Speech 리소스의 네트워킹 섹션에서 모든 네트워크 액세스 옵션을 설정한 경우에 작동합니다. 다른 경우에 권한 부여 토큰을 얻으려고 하면 Forbidden 또는 BadRequest 오류가 발생합니다.

텍스트 음성 변환 REST API 사용 예

서유럽을 샘플 Azure 지역으로 사용하고 my-private-link-speech.cognitiveservices.azure.com을 샘플 Speech 리소스 DNS 이름(사용자 지정 도메인)으로 사용합니다. 이 예에서 사용자 지정 도메인 이름 my-private-link-speech.cognitiveservices.azure.com은 서유럽 지역에서 생성된 Speech 리소스에 속합니다.

해당 지역에서 지원되는 음성 목록을 가져오려면 다음 요청을 수행합니다.

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

자세한 내용은 텍스트 음성 변환 REST API 설명서를 참조하세요.

private-endpoint-enabled Speech 리소스의 경우 동일한 작업에 대한 엔드포인트 URL을 수정해야 합니다. 동일한 요청은 다음과 같습니다.

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

Speech SDK에 대한 자세한 내용은 엔드포인트 URL 생성 하위 섹션을 참조하세요.

사용자 지정 도메인 이름 및 프라이빗 엔드포인트가 있는 Speech 리소스: Speech SDK와 함께 사용

사용자 지정 도메인 이름 및 private-endpoint-enabled Speech 리소스와 함께 Speech SDK를 사용하려면 애플리케이션 코드를 검토하고 변경해야 합니다.

이 섹션에서는 my-private-link-speech.cognitiveservices.azure.com을 샘플 Speech 리소스 DNS 이름(사용자 지정 도메인)으로 사용합니다.

엔드포인트 URL 생성

일반적으로 SDK 시나리오(및 짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API 시나리오에서)에서 Speech 리소스는 다양한 서비스 제공 사항을 위해 전용 지역 엔드포인트를 사용합니다. 이러한 엔드포인트의 DNS 이름 형식은 다음과 같습니다.

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

DNS 이름의 예는 다음과 같습니다.

westeurope.stt.speech.microsoft.com

지역에 가능한 모든 값(DNS 이름의 첫 번째 요소)은 Speech Service 지원 지역에 나열되어 있습니다. (Azure Government 및 21Vianet에서 운영하는 Azure 엔드포인트에 대해서는 이 문서를 참조하세요.) 다음 표에는 음성 서비스 제공에 가능한 값이 나와 있습니다(DNS 이름의 두 번째 요소).

DNS 이름 값 Speech Service 제공 사항
commands 사용자 지정 명령
convai 모임 대화 내용 기록
s2s Speech Translation
stt 음성 텍스트 변환
tts 텍스트 음성 변환
voice Custom Voice

따라서 앞의 예(westeurope.stt.speech.microsoft.com)는 서유럽의 음성 텍스트 변환 엔드포인트를 나타냅니다.

private-endpoint-enabled 엔드포인트는 특수 프록시를 통해 Speech Service와 통신합니다. 따라서 엔드포인트 연결 URL을 변경해야 합니다.

"표준" 엔드포인트 URL은

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

프라이빗 엔드포인트 URL은

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

예제 1. 애플리케이션이 다음 URL을 사용하여 통신합니다(서유럽에서 미국 영어에 대한 기본 모델을 사용한 음성 인식).

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

Speech 리소스의 사용자 지정 도메인 이름이 my-private-link-speech.cognitiveservices.azure.com인 경우 private-endpoint-enabled 시나리오에서 이를 사용하려면 다음과 같이 URL을 수정해야 합니다.

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

다음 세부 정보를 확인합니다.

  • 호스트 이름 westeurope.stt.speech.microsoft.com이 사용자 지정 도메인 호스트 이름 my-private-link-speech.cognitiveservices.azure.com으로 대체됩니다.
  • 원래 DNS 이름(stt)의 두 번째 요소는 URL 경로의 첫 번째 요소가 되고 원래 경로 앞에 옵니다. 따라서 원래 URL /speech/recognition/conversation/cognitiveservices/v1?language=en-US/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US가 됩니다.

예제 2. 애플리케이션이 다음 URL을 사용하여 서유럽에서 음성을 합성합니다.

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

다음의 동등한 URL은 Speech 리소스의 사용자 지정 도메인 이름이 my-private-link-speech.cognitiveservices.azure.com인 프라이빗 엔드포인트를 사용합니다.

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

예 1과 동일한 원칙이 적용되지만 이번에는 키 요소가 tts입니다.

애플리케이션 수정

코드를 수정하려면 다음 단계를 따르세요.

  1. 애플리케이션 엔드포인트 URL을 확인합니다.

    • 애플리케이션에 대한 로깅을 설정하고 실행하여 작업을 기록합니다.
    • 로그 파일에서 SPEECH-ConnectionUrl을 검색합니다. 일치하는 줄에서 value 매개 변수에는 애플리케이션이 음성 서비스에 연결하는 데 사용한 전체 URL이 포함됩니다.

    예시:

    (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'
    

    따라서 이 예에 사용된 애플리케이션의 URL은 다음과 같습니다.

    wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US
    
  2. 전체 엔드포인트 URL을 사용하여 SpeechConfig 인스턴스를 만듭니다.

    1. 이전 엔드포인트 URL 구성 섹션에 설명된 대로 결정한 엔드포인트를 수정합니다.

    2. SpeechConfig 인스턴스 작성 방법을 수정합니다. 대부분의 경우 애플리케이션은 다음과 같은 항목을 사용합니다.

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

      이 예제는 이전 섹션에서 설명한 호스트 이름 및 URL 변경으로 인해 private-endpoint-enabled Speech 리소스에 대해 작동하지 않습니다. private-endpoint-enabled 리소스의 키를 사용하여 수정하지 않고 기존 애플리케이션을 실행하려고 하면 인증 오류(401)가 발생합니다.

      오류를 해결하려면 SpeechConfig 클래스를 인스턴스화하는 방법을 수정하고 "엔드포인트에서"/"엔드포인트를 사용하여" 초기화를 사용합니다. 다음과 같은 두 개의 변수가 정의되어 있다고 가정합니다.

      • speechKey에는 private-endpoint-enabled Speech 리소스의 키가 포함됩니다.
      • endPoint에는 전체 수정된 엔드포인트 URL이 포함됩니다(해당 프로그래밍 언어에 필요한 유형 사용). 이 예에서 이 변수는 다음을 포함해야 합니다.
        wss://my-private-link-speech.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
        

      SpeechConfig 인스턴스를 만듭니다.

      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);
      

엔드포인트 URI에 지정된 쿼리 매개 변수는 다른 API에서 설정한 경우에도 변경되지 않습니다. 예를 들어, 인식 언어가 URI에서 쿼리 매개 변수 language=en-US로 정의되고 해당 속성을 통해 ru-RU로 설정된 경우 URI의 언어 설정이 사용됩니다. 이 경우 유효한 언어는 en-US입니다.

엔드포인트 URI에 설정된 매개 변수가 항상 우선합니다. 다른 API는 엔드포인트 URI에 지정되지 않은 매개 변수만 재정의할 수 있습니다.

이 수정 후 애플리케이션은 private-endpoint-enabled Speech 리소스와 함께 작동해야 합니다. 현재 프라이빗 엔드포인트 시나리오를 보다 원활하게 지원하기 위해 노력하고 있습니다.

Speech Studio 사용

Speech Studio는 애플리케이션에서 Azure AI Speech 서비스를 구축하고 통합하기 위한 도구가 포함된 웹 포털입니다. Speech Studio 프로젝트에서 작업하는 경우 해당 음성 리소스에 대한 네트워크 연결과 API 호출이 대신 수행됩니다. 프라이빗 엔드포인트, 가상 네트워크 서비스 엔드포인트 및 기타 네트워크 보안 옵션을 사용하면 Speech Studio 기능의 가용성이 제한될 수 있습니다. 일반적으로 Custom Speech, 사용자 지정 신경망 음성오디오 콘텐츠 만들기와 같은 기능을 사용할 때 Speech Studio를 사용합니다.

가상 네트워크에서 Speech Studio 웹 포털에 연결

Azure Virtual Network 내 가상 머신에서 Speech Studio를 사용하려면 이 가상 네트워크에 필요한 서비스 태그 세트에 대한 발신 연결을 허용해야 합니다. 자세한 내용은 여기를 참조하세요.

음성 리소스 엔드포인트에 대한 액세스는 Speech Studio 웹 포털에 대한 액세스와 동일하지 않습니다. 프라이빗 또는 Virtual Network 서비스 엔드포인트를 통해 Speech Studio 웹 포털에 액세스하는 것은 지원되지 않습니다.

Speech Studio 프로젝트 작업

이 섹션에서는 음성 리소스의 다양한 네트워크 보안 옵션에 서로 다른 종류의 Speech Studio 프로젝트 사용을 설명합니다. Speech Studio에 대한 웹 브라우저 연결이 설정됩니다. 음성 리소스 네트워크 보안 설정은 Azure Portal에서 설정됩니다.

  1. Azure Portal로 이동하여 Azure 계정에 로그인합니다.
  2. Speech 리소스를 선택합니다.
  3. 왼쪽 창의 리소스 관리 그룹에서 네트워킹>방화벽 및 가상 네트워크를 선택합니다.
  4. 모든 네트워크, 선택한 네트워크 및 프라이빗 엔드포인트 또는 사용 안 함 옵션 중에서 하나를 선택합니다.

사용자 지정 음성

다음 표에서는 음성 리소스 네트워킹>방화벽 및 가상 네트워크 보안 설정별로 Custom Speech 프로젝트 접근성을 설명합니다.

참고 항목

네트워킹>프라이빗 엔드포인트 연결 탭을 통해 프라이빗 엔드포인트만 허용하는 경우 Speech Studio를 음성 리소스와 함께 사용할 수 없습니다. Speech Studio 외부에서 음성 리소스를 계속 사용할 수 있습니다.

음성 리소스 네트워크 보안 설정 Speech Studio 프로젝트 접근성
모든 네트워크 제한 없음
선택한 네트워크 및 프라이빗 엔드포인트 허용된 공용 IP 주소에서 액세스 가능
사용 안 함 액세스할 수 없음

선택한 네트워크 및 프라이빗 엔드포인트를 선택하면 가상 네트워크방화벽 액세스 구성 옵션이 있는 탭이 표시됩니다. 방화벽 섹션에서는 공용 IP 주소를 최소 하나 이상 허용하고 Speech Studio와 브라우저 연결에 이 주소를 사용해야 합니다.

가상 네트워크를 통한 액세스만 허용하는 경우 실제로 Speech Studio를 통해 음성 리소스에 대한 액세스를 허용하지 않습니다. Speech Studio 외부에서 음성 리소스를 계속 사용할 수 있습니다.

프로덕션 음성 리소스에 대한 네트워크 액세스 제한 사항을 완화하지 않고 사용자 지정 음성을 사용하려면 다음 해결 방법 중 하나를 고려합니다.

  • 공용 네트워크에서 사용할 수 있는 개발을 위한 다른 음성 리소스를 만듭니다. 개발 리소스의 Speech Studio에서 사용자 지정 모델을 준비한 다음, 모델을 프로덕션 리소스에 복사합니다. 음성 텍스트 변환 REST API를 사용하여 Models_CopyTo REST 요청을 참조하세요.
  • 사용자 지정 음성에 Speech Studio를 사용하지 않는 옵션이 있습니다. 모든 사용자 지정 음성 작업에는 음성 텍스트 변환 REST API를 사용하세요.

Custom Voice 및 오디오 콘텐츠 만들기

음성 리소스 네트워크 보안 설정이 모든 네트워크인 경우에만 Custom Voice와 오디오 콘텐츠 만들기 Speech Studio 프로젝트를 사용할 수 있습니다.

프라이빗 엔드포인트 없이 Speech 리소스를 사용하도록 애플리케이션 조정

이 문서에서는 Speech 리소스에 대한 사용자 지정 도메인 사용 설정을 되돌릴 수 없다는 점을 여러 번 언급했습니다. 이러한 리소스는 지역 엔드포인트 이름을 사용하는 리소스와는 다른 방법으로 Speech Service와 통신합니다.

이 섹션에서는 Speech Service REST API 및 음성 SDK를 사용하여 사용자 지정 도메인 이름은 사용하고 프라이빗 엔드포인트는 사용하지 않는 음성 리소스를 사용하는 방법을 설명합니다. 이 리소스는 한 때 프라이빗 엔드포인트 시나리오에서 사용되었지만 해당 프라이빗 엔드포인트가 삭제된 리소스일 수 있습니다.

DNS 구성

private-endpoint-enabled Speech 리소스의 사용자 지정 도메인 DNS 이름이 퍼블릭 네트워크에서 어떻게 확인되는지 기억해 두세요. 이 경우 확인된 IP 주소는 가상 네트워크의 프록시 엔드포인트를 가리킵니다. 해당 엔드포인트는 프라이빗 엔드포인트 지원 Azure AI 서비스 리소스로 네트워크 트래픽을 디스패치하는 데 사용됩니다.

그러나 모든 리소스 프라이빗 엔드포인트가 제거되면(또는 사용자 지정 도메인 이름을 사용하도록 설정한 직후) Speech 리소스의 CNAME 레코드가 다시 프로비저닝됩니다. 이제 해당 Azure AI 서비스 지역 엔드포인트의 IP 주소를 가리킵니다.

따라서 nslookup 명령의 출력은 다음과 같습니다.

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

이 섹션의 출력과 비교합니다.

사용자 지정 도메인 이름은 사용하고 프라이빗 엔드포인트는 사용하지 않는 Speech 리소스: REST API 사용

음성 텍스트 변환 REST API

음성 텍스트 변환 REST API 사용은 private-endpoint-enabled 음성 리소스의 경우와 완전히 동일합니다.

짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API

이 경우 짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API 사용 방법은 한 가지 예외를 제외하고는 일반적인 경우와 차이가 없습니다. (다음 참고 참조) 짧은 오디오용 음성 텍스트 변환 REST API텍스트 음성 변환 REST API 설명서에 설명된 대로 두 API를 모두 사용해야 합니다.

참고 항목

사용자 지정 도메인 시나리오에서 짧은 오디오용 음성 텍스트 변환 REST API 및 텍스트 음성 변환 REST API를 사용하는 경우 Ocp-Apim-Subscription-Key 헤더를 통해 전달된 음성 리소스 키를 사용합니다. (자세한 내용은 짧은 오디오용 음성 텍스트 변환 REST API텍스트 음성 변환 REST API 참조)

권한 부여 토큰을 사용하고 Authorization 헤더를 통해 특수 엔드포인트로 전달하는 것은 Speech 리소스의 네트워킹 섹션에서 모든 네트워크 액세스 옵션을 설정한 경우에 작동합니다. 다른 경우에 권한 부여 토큰을 얻으려고 하면 Forbidden 또는 BadRequest 오류가 발생합니다.

사용자 지정 도메인 이름은 사용하고 프라이빗 엔드포인트는 사용하지 않는 Speech 리소스: Speech SDK 사용

프라이빗 엔드포인트를 사용하지 않는 custom-domain-enabled Speech 리소스와 함께 Speech SDK를 사용하는 방법은 Speech SDK 설명서에 설명된 일반적인 경우와 동일합니다.

private-endpoint-enabled Speech 리소스와 함께 사용하기 위해 코드를 수정한 경우 다음을 고려합니다.

private-endpoint-enabled Speech 리소스 섹션에서 엔드포인트 URL을 확인하고 수정하고 SpeechConfig 클래스 인스턴스의 "엔드 포인트에서"/"엔드 포인트를 사용하여" 초기화를 통해 작동하도록 하는 방법을 설명했습니다.

그러나 모든 프라이빗 엔드포인트를 제거한 후 동일한 애플리케이션을 실행하려고 하면(해당 DNS 레코드를 다시 프로비저닝하는 데 약간의 시간이 허용됨) 내부 서비스 오류(404)가 발생합니다. 그 이유는 이제 DNS 레코드가 가상 네트워크 프록시 대신 지역 Azure AI 서비스 엔드포인트를 가리키고 /stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US와 같은 URL 경로를 찾을 수 없기 때문입니다.

다음과 같은 코드 스타일에서 애플리케이션을 SpeechConfig의 표준 인스턴스화로 롤백해야 합니다.

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

프라이빗 엔드포인트와 가상 네트워크 서비스 엔드포인트의 동시 사용

프라이빗 엔드포인트가상 네트워크 서비스 엔드포인트를 사용하여 동일한 Speech 리소스에 동시에 액세스할 수 있습니다. 이 동시 사용을 사용하려면 Azure Portal에서 음성 리소스의 네트워킹 설정에서 선택한 네트워크 및 프라이빗 엔드포인트 옵션을 사용해야 합니다. 이 시나리오에는 다른 옵션이 지원되지 않습니다.

가격 책정

가격 책정에 대한 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.

자세한 정보