-
Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법닷넷/C# 2023. 7. 27. 10:07반응형
TTS는 텍스트를 음성으로 변환시켜주는 기술이며, 이것을 서비스하고 API로 만든 회사들이 꽤 많이 있다.
그 중에서 Microsoft에서 제공하는 TTS를 사용하는 방법과 C#에서 적용하는 방법을 설명한다.
Azure 사이트에서
1. 사이트 접속 및 계정 로그인
https://azure.microsoft.com/ko-kr/products/cognitive-services/text-to-speech
1.1. Microsoft Azure 신규 사용자라면, [텍스트 음성 변환 무료로 사용해 보기] > [무료 체험 시작하기]를 통해 가입한다.
1.2. 기존 가입자인 경우는 아래 이미지와 같이 나오면 둘 중에 하나 선택한다.
1.3. 기존 가입자이면서 체험판 기간이 끝난 계정은 아래와 같이 나오는데 하라는대로 계정을 업그레이드 한다.
1.4 나는 추가적으로 돈이 안 드는 기본을 선택해서 업그레이드 했다.
참고로 체험판 계정을 사용했을 때 남은 크레딧이 있다면 한 달 기한을 주고, 쓸 수 있는 것 같다.
2. 로그인이 완료되면 Azure 포탈로 이동하게 되는데, 자동으로 이동이 되지 않는다면 링크를 눌러 들어간다. https://portal.azure.com/#home
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는 텍스트를 음성으로 변환 하는 것 뿐만 아니라 음성을 텍스트로 변환, 번역, 등등 활용할 수 있는 분야가 넓다.
반응형'닷넷 > C#' 카테고리의 다른 글
NullReferenceException, Null 참조 오류 등 Null 예외 처리에 대한 고찰과 지침서 (1) 2024.07.12 C# Interlocked.Increment에 대한 고찰 (0) 2023.07.20 C# 기초지식, 정보 정리 (면접 질문 대비, 꼭 알아야 하는 것) (0) 2023.04.11 C# 시간 계산 두 번 째 (TimeSpan, DateTimeOffset) (0) 2023.04.06 C# JSON 파일 읽기/쓰기 (Deserialize/Serialize) (0) 2023.04.04