|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
pi-text-to-speech.md | 4 weeks ago | |
single-board-computer-set-timer.md | 4 weeks ago | |
virtual-device-text-to-speech.md | 4 weeks ago | |
wio-terminal-set-timer.md | 4 weeks ago | |
wio-terminal-text-to-speech.md | 4 weeks ago |
README.md
타이머 설정 및 음성 피드백 제공
스케치노트: Nitya Narasimhan. 이미지를 클릭하면 더 큰 버전을 볼 수 있습니다.
강의 전 퀴즈
소개
스마트 어시스턴트는 단방향 통신 장치가 아닙니다. 사용자가 말을 하면, 기기가 응답합니다:
"알렉사, 3분 타이머 설정해줘."
"알겠습니다. 3분 타이머를 설정했습니다."
지난 두 강의에서는 음성을 텍스트로 변환하고, 그 텍스트에서 타이머 설정 요청을 추출하는 방법을 배웠습니다. 이번 강의에서는 IoT 기기에서 타이머를 설정하고, 사용자가 요청한 타이머를 확인하는 음성으로 응답하며, 타이머가 완료되었을 때 알림을 제공하는 방법을 배울 것입니다.
이번 강의에서 다룰 내용은 다음과 같습니다:
텍스트를 음성으로 변환하기
텍스트를 음성으로 변환하는 과정은 이름 그대로 텍스트를 음성으로 변환하는 과정입니다. 기본 원리는 텍스트의 단어를 구성하는 소리(음소)로 나누고, 이 소리에 대한 오디오를 미리 녹음된 파일이나 AI 모델을 사용해 생성하여 결합하는 것입니다.
텍스트 음성 변환 시스템은 일반적으로 세 가지 단계를 거칩니다:
- 텍스트 분석
- 언어 분석
- 파형 생성
텍스트 분석
텍스트 분석은 제공된 텍스트를 받아 음성을 생성할 수 있는 단어로 변환하는 과정입니다. 예를 들어, "Hello world"는 텍스트 분석이 필요하지 않습니다. 두 단어를 바로 음성으로 변환할 수 있기 때문입니다. 하지만 "1234"는 상황에 따라 "천이백삼십사" 또는 "일, 이, 삼, 사"로 변환해야 할 수 있습니다. 예를 들어, "나는 1234개의 사과를 가지고 있다"는 "천이백삼십사"로 변환되지만, "아이들이 1234를 세었다"는 "일, 이, 삼, 사"로 변환됩니다.
단어의 생성은 언어뿐만 아니라 해당 언어의 지역적 특성에 따라 달라질 수 있습니다. 예를 들어, 미국 영어에서는 120을 "One hundred twenty"라고 하지만, 영국 영어에서는 "One hundred and twenty"라고 하며, "and"를 추가합니다.
✅ 텍스트 분석이 필요한 다른 예로는 "in"이 인치의 약어로 사용되거나, "st"가 성인(Saint) 또는 거리(Street)의 약어로 사용되는 경우가 있습니다. 여러분의 언어에서 문맥 없이는 모호한 단어의 예를 생각해 보세요.
단어가 정의되면, 언어 분석 단계로 넘어갑니다.
언어 분석
언어 분석은 단어를 음소로 나누는 과정입니다. 음소는 단순히 사용된 글자뿐만 아니라 단어 내 다른 글자에 따라 달라질 수 있습니다. 예를 들어, 영어에서 'car'와 'care'의 'a' 소리는 다릅니다. 영어에는 알파벳 26자에 대해 44개의 음소가 있으며, 일부는 서로 다른 글자가 공유하기도 합니다. 예를 들어, 'circle'과 'serpent'의 시작 소리는 동일한 음소를 사용합니다.
✅ 조사해 보세요: 여러분의 언어에는 어떤 음소가 있는지 알아보세요.
음소로 변환된 단어는 억양, 톤, 길이를 조정하기 위한 추가 데이터가 필요합니다. 예를 들어, 영어에서는 문장을 질문으로 바꾸기 위해 마지막 단어의 음조를 높이는 방식으로 억양을 조정합니다.
예를 들어, "You have an apple"은 단순히 사과를 가지고 있다는 진술입니다. 하지만 마지막 단어 'apple'의 음조를 높이면 "You have an apple?"이라는 질문으로 바뀝니다. 언어 분석은 문장 끝의 물음표를 사용해 음조를 높이도록 결정합니다.
음소가 생성되면, 파형 생성 단계로 넘어가 오디오 출력을 생성합니다.
파형 생성
초기의 전자 텍스트 음성 변환 시스템은 각 음소에 대해 단일 오디오 녹음을 사용했기 때문에 매우 단조롭고 로봇 같은 소리를 냈습니다. 언어 분석에서 생성된 음소를 데이터베이스에서 불러와 결합하여 오디오를 생성했습니다.
✅ 조사해 보세요: 초기 음성 합성 시스템의 오디오 녹음을 찾아보세요. 스마트 어시스턴트에서 사용하는 현대 음성 합성과 비교해 보세요.
현대의 파형 생성은 딥러닝(뇌의 뉴런과 유사하게 작동하는 매우 큰 신경망)을 사용하는 머신러닝(ML) 모델을 활용하여 더 자연스러운 소리를 생성합니다. 이 소리는 인간의 목소리와 구별하기 어려울 정도로 자연스럽습니다.
💁 이러한 ML 모델은 전이 학습을 통해 실제 사람의 목소리처럼 들리도록 재훈련될 수 있습니다. 이는 은행에서 보안 시스템으로 음성을 사용하는 것이 더 이상 안전하지 않음을 의미합니다. 몇 분간의 음성 녹음만 있으면 누구나 여러분을 흉내낼 수 있기 때문입니다.
이러한 대규모 ML 모델은 세 단계를 결합하여 종단 간 음성 합성기를 훈련시키고 있습니다.
타이머 설정하기
타이머를 설정하려면, IoT 기기가 서버리스 코드를 사용해 생성한 REST 엔드포인트를 호출하고, 반환된 초 단위 시간을 사용해 타이머를 설정해야 합니다.
작업 - 서버리스 함수 호출하여 타이머 시간 가져오기
IoT 기기에서 REST 엔드포인트를 호출하고 필요한 시간에 대해 타이머를 설정하는 방법에 대한 가이드를 따르세요:
텍스트를 음성으로 변환하기
이전에 음성을 텍스트로 변환하는 데 사용했던 동일한 음성 서비스를 사용해 텍스트를 음성으로 변환할 수 있습니다. 변환된 음성은 IoT 기기의 스피커를 통해 재생할 수 있습니다. 변환할 텍스트와 함께 필요한 오디오 유형(예: 샘플 속도)을 음성 서비스에 전송하면, 오디오가 이진 데이터로 반환됩니다.
이 요청을 보낼 때는 Speech Synthesis Markup Language (SSML)를 사용합니다. SSML은 음성 합성 애플리케이션을 위한 XML 기반 마크업 언어로, 변환할 텍스트뿐만 아니라 텍스트의 언어, 사용할 음성, 속도, 볼륨, 음조 등을 정의할 수 있습니다.
예를 들어, 아래 SSML은 "Your 3 minute 5 second time has been set"이라는 텍스트를 영국 영어 음성 en-GB-MiaNeural
로 변환하도록 요청합니다.
<speak version='1.0' xml:lang='en-GB'>
<voice xml:lang='en-GB' name='en-GB-MiaNeural'>
Your 3 minute 5 second time has been set
</voice>
</speak>
💁 대부분의 텍스트 음성 변환 시스템은 다양한 언어에 대해 여러 음성을 제공합니다. 예를 들어, 영국 영어 음성은 영국식 억양을, 뉴질랜드 영어 음성은 뉴질랜드 억양을 가질 수 있습니다.
작업 - 텍스트를 음성으로 변환하기
IoT 기기를 사용해 텍스트를 음성으로 변환하는 방법에 대한 관련 가이드를 따라 작업하세요:
🚀 도전 과제
SSML은 특정 단어에 강조를 추가하거나, 일시 정지를 삽입하거나, 음조를 변경하는 등 단어가 발음되는 방식을 변경할 수 있는 방법을 제공합니다. IoT 기기에서 다양한 SSML을 전송하고 결과를 비교하며 이를 시도해 보세요. SSML에 대한 자세한 내용은 World Wide Web Consortium의 Speech Synthesis Markup Language (SSML) Version 1.1 사양에서 확인할 수 있습니다.
강의 후 퀴즈
복습 및 자기 학습
- 위키백과의 음성 합성 페이지에서 음성 합성에 대해 더 알아보세요.
- BBC 뉴스의 '가짜 목소리로 사이버 범죄자들이 돈을 훔치는 방법' 기사에서 음성 합성을 이용한 범죄 사례를 읽어보세요.
- Vice의 '이 틱톡 소송은 AI가 성우들에게 어떤 피해를 주고 있는지 보여준다' 기사에서 음성 합성으로 인해 성우들이 겪는 위험에 대해 알아보세요.
과제
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.