SSML 이해
SSML(Speech Synthesis Markup Language)은 음성 합성 애플리케이션을 위해 텍스트의 어노테이션을 제공하는 XML 기반 마크업 언어입니다. 이는 VoiceXML 2.0 스펙으로 음성 합성을 위해 표준 마크업 언어로 채택된 W3C Voice-Browser Working Group의 권장사항입니다. SSML은 개발자가 마크업을 통해 발음, 볼륨, 음높이, 속도 및 기타 속성을 지정하도록 하여 합성 프로세스의 측면을 제어하기 위한 표준 방식으로 음성 애플리케이션의 개발자를 제공합니다. SSML을 사용하여 지원되는 모든 언어로 텍스트 합성을 제어할 수 있습니다.
IBM Watson® Text to Speech 서비스는 2010년 9월 7일에 W3C 권장한 SSML 버전 1.1 기반으로 지원합니다. For more information about the W3C SSML recommendation, see W3C Speech Synthesis Markup Language(SSML)Version 1.1.
SSML 소개
SSML은 사전 정의된 요소 또는 태그 세트를 사용하여 합성기에 전달되는 일반 텍스트를 기능 보강하여 작동됩니다. XML 구분 분석기는 먼저 마크업 스펙에서 일반 입력 텍스트를 구분합니다. 그런 다음 스펙은 원하는 효과를 위해 합성기를 사용하여 이해할 수 있는 형식으로 작성된 일련의 소개로 처리되고 전송됩니다. XML 구문 분석기가 이 작업을 수행하려면 마크업은 올바르게 구성되어야 합니다. 예를 들어, 요소는 닫히고 여러 요소는 적절하게 중첩되어야 합니다. 기본 XML 개념에 대한 소개는 w3schools.com/xml/xml_whatis.asp 참조하세요.
SSML 요소는 여는 태그 및 해당 닫는 태그를 포함하여 내부에 포함되는 모든 항목이 될 수 있습니다. 다음 예에서 표시된 대로 요소에는 기타 요소(태그가 중첩될 수 있음) 및 텍스트의 조합이 포함될 수 있습니다. 또한 요소는 특정 값으로 설정된 속성을 필요로 하거나 선택적으로 허용할 수 있습니다.
<tag1>
<tag2 attributeName="attributeValue">
... some text ...
</tag2>
</tag1>
전체 법적 SSML 문서는 SSML 문서를 유효성 검증할 스키마, 인코딩과 같은 정보가 포함된 XML 프롤로그, 루트 요소인 <speak>
(으)로 구성됩니다. Within the span of the <speak>
element, you specify the text that is to be synthesized, augmented with additional
elements.
<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1">
... the body that contains text to be synthesized plus markup ...
</speak>
서비스에 전달하는 텍스트에는 XML 프롤로그가 필요하지 않습니다. 이 서비스는 전체 XML 헤더를 포함하지 않고 상위 요소를 포함할 필요가 없는 SSML 요소인 SSML 조각을 지원합니다. 예를 들어 합성을 위해 전송하는 SSML의 경우 <?xml>
및 <speak>
요소는 항상 선택 사항입니다.
SSML 지원
서비스에서 SSML 및 관련 기능을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요:
- 이 서비스는 대부분의 W3C 사양을 구현하고 SSML 조각을 지원합니다.
- 모든 SSML 요소와 관련된 서비스의 지원 레벨에 대한 전체 정보는 SSML 요소를 참조하십시오.
- 음성 합성 요청의
text
함께 SSML 요소를 사용하는 예는 입력 텍스트의 예를 참조하세요.
- 이 서비스는 향상된 신경 음성 및 표현력 있는 신경 음성을 위한 추가 합성 기능을 지원합니다:
- 이 서비스는 표현력이 풍부한 뉴럴 보이스를 위한 추가 합성 기능을 지원합니다:
- 이 서비스는 독일어 음성에서 영숫자 문자열의 철자를 제어할 수 있는 합성 기능을 지원합니다. 자세한 내용은 문자열 철자법 지정하기를 참조하세요.
- 이 서비스는 결과 오디오의 단어에 대한 타이밍 정보를 얻기 위해 WebSocket 인터페이스와 함께 SSML
<mark>
요소의 사용을 지원합니다. WebSocket 인터페이스를 사용하면 입력 텍스트의 모든 문자열에 대한 정보를 요청할 수도 있습니다. 자세한 정보는 다음을 참조하십시오. - 서비스의 사용자 정의 인터페이스는 SSML
<phoneme>
요소의 사용을 지원하여 단어를 발음하는 데 사용하는 음성 맞춤법을 지정합니다. 음성 철자법은 단어의 소리, 그 소리를 음절로 나누는 방법, 강세를 받는 음절을 나타냅니다.
SSML 유효성 검증
서비스는 합성을 위한 입력 텍스트로 또는 사용자 정의를 위해 단어의 변환의 정의로 모든 컨텐츠에 제출하는 모든 SSML 요소를 유효성 검증합니다. 서비스는 합성을 위해 제출된 텍스트에 SSML 요소가 포함되는지 여부를 미리 판별할 수 없습니다. 그러므로 SSML 포함 여부에 관계 없이 모든 입력 텍스트에 대해 동일한 유효성 검증을 수행합니다.
요소 및 속성 유효성 검사
이 서비스는 SSML 요소 및 속성에 대해 다음과 같은 유효성 검사를 수행합니다:
-
모든 SSML 입력이 올바르며 올바르게 구성되어야 합니다.
-
서비스는 지원되지 않는 SSML 요소를 자동으로 무시합니다. 이 서비스는 지원되지 않는 요소의 태그에 포함된 텍스트를 합성하며, 해당 요소만 무시합니다.
-
이 서비스는 잘못된 SSML 요소 또는 속성에 대해 HTTP 400 오류 코드를 반환합니다. 속성이 필요한 SSML 요소를 지정하는 경우:
- 필수 속성을 지정해야 합니다.
- 필수 속성에 유효한 값을 지정해야 합니다.
- 유효하지 않은 속성이나 값을 추가로 포함하면 무시됩니다.
요청이 실패하면 오류 응답에 설명 메시지가 포함됩니다. 예를 들어
<say-as>
요소가 포함된 다음 입력 텍스트를 지정한다고 가정해 보겠습니다:"text": "The price is <say-as interpret-as=\"currency\">$2,500.00</say-as>."
이 예에서는
interpret-as
속성이 필수이며 지정되었지만 해당 값이 유효하지 않습니다. 속성의 유효한 값은currency
아닌vxml:currency
. 오류 응답에는 다음 메시지가 포함됩니다:The connection to the Watson Text to Speech service closed with the following error: Tag <say-as> has invalid attribute interpret-as=currency
SSML 오류 요약
표 1은 여러 가지 일반적인 SSML 유효성 검사 오류에 대해 설명합니다. 각각의 경우 요청이 실패하고 서비스에서 400 오류 코드를 반환합니다.
유효성 검증 오류 | 문제 설명 |
---|---|
잘못된 SSML 요소 | 예를 들어, 태그를 올바르지 않게 지정하거나, 필수 속성을 생략하거나, 닫는 태그 없이 여는 태그만 포함합니다. |
이스케이프되지 않은 XML 제어 문자 | The input text itself contains a " , ' , & , < , > , or / character instead of its equivalent escape string or character encoding. 자세한 정보는 XML 제어 문자 이스케이프를
참조하십시오. |
잘못된 음절 강세 | IBM 대한 <phoneme> 요소의 ph 속성입니다 SPR에 잘못된 음절 강세가 포함되어 있습니다. 음절 및 음절 강세 표시에 대한 자세한 내용은 음절 지정을 참조하세요. |
잘못된 음성 기호 | The ph attribute of a <phoneme> element includes an unsupported IPA or SPR symbol for the specified language. |
모음 없음 | The ph attribute of a <phoneme> element specifies a word pronunciation that includes no vowels. |
잘못된 위치의 프랑스 연락 담당자 | In the ph attribute of a <phoneme> element, the liaison character does not follow a consonant or it occurs in the middle of a word's pronunciation. |
일본어 : 기호는 모음 앞에 오지 않습니다 |
일본어에서 <phoneme> 요소의 ph 속성에서 : 문자는 모음 앞에 오지 않습니다(음절 경계와 같은 다른 기호가 사이에 있을 수 있음). |
SSML <prosody> 요소의 잘못된 사용 |
You cannot use the contour , duration , range , and volume attributes of the <prosody> element with any voice. |
SSML <express-as> 요소의 잘못된 사용 |
표현형 신경 음성에만 <express-as> 요소를 사용할 수 있습니다. |