닷넷/C#

Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법

FreeBear 2023. 7. 27. 10:07
반응형

TTS는 텍스트를 음성으로 변환시켜주는 기술이며, 이것을 서비스하고 API로 만든 회사들이 꽤 많이 있다.

그 중에서 Microsoft에서 제공하는 TTS를 사용하는 방법과 C#에서 적용하는 방법을 설명한다.

 

Azure 사이트에서

1. 사이트 접속 및 계정 로그인

https://azure.microsoft.com/ko-kr/products/cognitive-services/text-to-speech

 

Text to Speech – 현실적인 AI 음성 생성기 | Microsoft Azure

AI 음성 생성기를 사용하여 합성된 음성을 사용하여 자연스럽게 말하는 앱 및 서비스를 빌드합니다. 텍스트 판독기 및 텍스트 음성 변환 기능을 사용하여 고객의 몰입도를 높일 수 있습니다.

azure.microsoft.com

 

1.1. Microsoft Azure 신규 사용자라면, [텍스트 음성 변환 무료로 사용해 보기] > [무료 체험 시작하기]를 통해 가입한다.

 

1.2. 기존 가입자인 경우는 아래 이미지와 같이 나오면 둘 중에 하나 선택한다.

 

1.3. 기존 가입자이면서 체험판 기간이 끝난 계정은 아래와 같이 나오는데 하라는대로 계정을 업그레이드 한다.

 

1.4 나는 추가적으로 돈이 안 드는 기본을 선택해서 업그레이드 했다.

 

참고로 체험판 계정을 사용했을 때 남은 크레딧이 있다면 한 달 기한을 주고, 쓸 수 있는 것 같다.

 

 

2. 로그인이 완료되면 Azure 포탈로 이동하게 되는데, 자동으로 이동이 되지 않는다면 링크를 눌러 들어간다. https://portal.azure.com/#home

 

Microsoft Azure

 

portal.azure.com

 

 

 

3. [Azure 서비스] 혹은 [탐색]에 있는 구독에 들어간다.

 

3.1. 이미 존재하는 구독이 있는지 확인 한다.

 

3.2. 존재하는 구독이 없다면 구독을 만들고 다음을 진행하고, 있다면 해당 구독을 클릭하고, 설정 탭에 있는 리소스를 클릭한다.

 

3.3 리소스가 없다면 [만들기] 클릭

 

3.4. 'Cognitive Services'를 검색하면 나오는 아래 이미지의 것을 만들기 한다.

 

3.5. 만드는 과정에서 * 표시들은 전부 채워준다.

 

리소스 그룹이 없다면 새로 만들기에서 만든다.

 

지역은 한국이니까 한국으로 하고, 이름은 리소스의 이름이면서 도메인으로도 사용되는 부분이라 고유하게 지어야 한다.

 

다 되었으면 [검토+만들기] > [만들기] 클릭

 

 

 

4. 방금 등록한 혹은 등록되어 있는 리소스로 이동 한 다음, 리소스 관리에 [키 및 엔드포인트]를 클릭한다.

 

 

5. 이 정보들이 C#에서 코딩할 때 필요하다.

가린 부분이 아까 이름에 해당하는 부분이다.

 

 

Visual Studio 프로젝트에서

1. [도구] > [NuGet 패키지 관리자] > [솔루션용 NuGet 패키지 관리]에서 Microsoft.CognitiveServices.Speech 검색하면 나오는 라이브러리를 설치한다.

 

 

2. C# 예제 코드

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;

class Program
{
    static async Task Main(string[] args)
    {
        // 구독 키와 지역 정보를 설정합니다.
        string subscriptionKey = "YourSubscriptionKey";
        string region = "YourRegion"; // 예: "eastus", "westus", ...

        // SpeechSynthesizer 객체를 생성합니다.
        var config = SpeechConfig.FromSubscription(subscriptionKey, region);
        using (var synthesizer = new SpeechSynthesizer(config))
        {
            // 텍스트를 음성으로 변환합니다.
            string textToSynthesize = "이것은 텍스트를 음성으로 변환한 것 입니다.";
            using (var result = await synthesizer.SpeakTextAsync(textToSynthesize))
            {
                if (result.Reason == ResultReason.SynthesizingAudioCompleted)
                {
                	// 음성 변환 완료
                    // 음성 데이터를 스트림으로 저장하거나 다른 용도로 사용합니다.
                    byte[] audioData = result.AudioData;
                    // TODO: 파일로 저장하거나 다른 용도로 사용하세요.
                }
                else
                {
                    Console.WriteLine($"음성 변환 실패: {result.Reason}");
                    
                    var cancellation = SpeechSynthesisCancellationDetails.FromResult(result);
                    Console.WriteLine($":: Reason={cancellation.Reason}");

                    if (cancellation.Reason == CancellationReason.Error)
                    {
                        Console.WriteLine($"::: ErrorCode={cancellation.ErrorCode}");
                        Console.WriteLine($"::: ErrorDetails=[{cancellation.ErrorDetails}]");
                    }
                }
            }
        }
    }
}

 

참고로 MS의 이 Cognitive Services는 텍스트를 음성으로 변환 하는 것 뿐만 아니라 음성을 텍스트로 변환, 번역, 등등 활용할 수 있는 분야가 넓다.

반응형