음성 합성 마크업 언어(SSML) 참조(베타)

Actions on Google 플랫폼은 Actions on Google 표준 SSML 요소 외에도 다양한 SSML 베타 기능을 지원합니다.

지원되는 베타 SSML 기능 요약:

  • <phoneme>: 특정 단어의 발음을 맞춤설정합니다.
  • <say-as interpret-as="duration">: 기간을 지정합니다.
  • <voice>: 동일한 요청에서 각 음성으로 전환합니다.
  • <lang>: 동일한 요청에서 여러 언어를 사용합니다.
  • 타임포인트: <mark> 태그를 사용하면 스크립트에서 지정된 포인트의 타임포인트를 반환할 수 있습니다.

<phoneme>

<phoneme> 태그를 사용하여 단어의 커스텀 발음을 인라인으로 생성할 수 있습니다. Actions on Google은 IPAX-SAMPA 표음 기호를 허용합니다. 지원되는 언어 및 음소 목록은 음소 페이지를 참조하세요.

<phoneme> 태그를 한 번씩 적용하여 단일 단어의 음성을 지정합니다.

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

강세 표시

스크립트에는 최대 3개의 강세를 표시할 수 있습니다.

  1. Primary 스트레스: IPA에서는 ˈ, X-SAMPA에서는 "로 표시됩니다.
  2. 2차 스트레스: IPA에서는 ˌ, X-SAMPA에서는 %로 표시됩니다.
  3. 강세 없음: 기호 또는 특정 표기법으로 표시되지 않습니다.

일부 언어는 강세가 3개 미만이거나 강세 표시가 전혀 사용되지 않을 수 있습니다. 해당 언어의 스트레스 수준을 확인하려면 소리나는 메시지 페이지를 참조하세요. 스트레스 마커는 스트레스를 받는 각 음절의 시작 부분에 배치됩니다. 예를 들어 미국 영어에서는 다음과 같습니다.

예시 단어 IPA X-SAMPA
ˈwɑːtɚ "wA:t@`
underwater ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

넓은 텍스트 변환과 좁은 스크립트 비교

일반적으로 표기는 포괄적이고 자연적인 음성으로 표현하는 것이 좋습니다. 예를 들어 미국 영어에서는 탭을 사용하는 대신 인터보컬 t을 텍스트로 변환합니다.

예시 단어 IPA X-SAMPA
butter ˈbʌɾɚ 대신 ˈbʌtɚ "bV4@` 대신 "bVt@`

일부 경우에는 음성 표현을 사용함으로써 TTS 결과가 부자연스럽게 들릴 수 있습니다(예: 일련의 음소가 해부학적으로 발음하기 어려운 경우).

한 가지 예는 영어로 된 s의 음성 시뮬레이션입니다. 이러한 경우에는 그러한 동화현상을 표기에 반영해야 합니다.

예시 단어 IPA X-SAMPA
cats ˈkæts "k{ts
ˈdɑːgs 대신 ˈdɑːgz "dA:gs 대신 "dA:gz

약화

모든 음절은 하나(그리고 단 하나)의 모음을 포함해야 합니다. 즉 음절 자음 사용을 피하고 대신 이를 약화된 모음으로 표기해야 합니다. 예:

예시 단어 IPA X-SAMPA
kitten ˈkɪtn 대신 ˈkɪtən "kitn 대신 "kIt@n
kettle ˈkɛtl 대신 ˈkɛtəl "kEtl 대신 "kEt@l

음절 구분

원하는 경우 .를 사용하여 음절 경계를 지정할 수 있습니다. 각 음절에는 모음이 하나만 포함되어야 합니다. 예를 들면 다음과 같습니다.

예시 단어 IPA X-SAMPA
가독성 ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

기간

Actions on Google 플랫폼은 기간을 올바르게 읽을 수 있도록 <say-as interpret-as="duration">를 지원합니다. 예를 들어 다음 예는 '5시간 30분'으로 구두로 표현합니다.

<say-as interpret-as="duration" format="h:m">5:30</say-as>

형식 문자열에는 다음 값이 지원됩니다.

축약어
h 시간
s
ms 밀리초

<voice>

<voice> 태그를 사용하면 단일 SSML 요청에 음성을 두 가지 이상 사용할 수 있습니다. 다음 예시에서 기본 음성은 남자 영어 음성입니다. 이 음성에서는 여자 음성으로 프랑스어로 발음되는 "qu'est-ce qui t'amène ici"를 제외하고 모든 단어가 기본 언어(영어) 및 성별(남성)로 합성됩니다.

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

또는 language 또는 gender를 지정하는 대신 <voice> 태그를 사용하여 개별 음성 (지원되는 음성 및 언어 페이지에 있는 음성 이름)을 지정할 수 있습니다.

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

<voice> 태그를 사용할 때 Actions on Google은 name (사용할 음성 이름) 또는 다음 속성의 조합을 수신할 것으로 예상합니다. 세 가지 속성은 모두 선택사항이지만 name를 제공하지 않는 경우 최소한 하나를 제공해야 합니다.

  • gender: male, female, neutral 중 하나입니다.
  • variant: 구성에 따라 사용할 음성이 여러 가지일 때 결정자로 사용됩니다.
  • language: 원하는 언어입니다. 제공된 <voice> 태그에 언어를 하나만 지정할 수 있습니다. 언어는 BCP-47 형식으로 지정합니다. 지원되는 음성 및 언어 페이지언어 코드 열에서 해당 언어의 BCP-47 코드를 찾을 수 있습니다.

또한 두 가지 추가 태그인 requiredordering을 사용하여 gender, variant, language 속성의 상대적 우선순위를 제어할 수 있습니다.

  • required: 속성이 required로 지정되고 올바르게 구성되지 않은 경우 요청이 실패합니다.
  • ordering: ordering 태그가 필수가 아닌 선호 속성으로 간주된 다음에 나열되는 모든 속성입니다. SSML은 ordering 태그 뒤에 나열되는 순서에 따라 기본 속성을 최대한 고려합니다. 기본 속성이 잘못 구성된 경우 Actions on Google이 여전히 유효한 음성을 반환할 수 있지만 잘못된 구성은 삭제됩니다.

requiredordering 태그를 사용하는 구성 예시:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

<lang>을 사용하면 동일한 SSML 요청 내에서 여러 언어로 텍스트를 포함할 수 있습니다. <voice> 태그를 사용하여 음성을 명시적으로 변경하지 않는 한 모든 언어가 동일한 음성을 합성됩니다. xml:lang 문자열은 도착어를 BCP-47 형식으로 포함해야 합니다. 이 값은 지원되는 음성 표에 '언어 코드'로 나와 있습니다. 다음 예에서 'chat'은 기본 언어 (영어)가 아닌 프랑스어로 표현됩니다.

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

Actions on Google 플랫폼은 최선을 다해 <lang> 태그를 지원합니다. 동일한 SSML 요청에 지정되더라도 모든 언어 조합이 동일한 품질 결과를 생성하는 것은 아닙니다. 일부 경우에는 언어 조합으로 인해 감지할 수 있지만 미묘하거나 부정적으로 인식되는 효과를 발생시킬 수 있습니다. 알려진 문제:

  • 간지 문자를 사용하는 일본어는 <lang> 태그가 지원되지 않습니다. 입력은 음역되고 중국어 문자로 읽힙니다.
  • 아랍어, 히브리어, 페르시아어와 같은 셈어는 <lang> 태그에서 지원되지 않으므로 무음으로 처리됩니다. 이러한 언어를 사용하려면 <voice> 태그를 사용하여 원하는 언어를 사용하는 음성으로 전환하는 것이 좋습니다 (가능한 경우).