Tài liệu tham khảo về Ngôn ngữ đánh dấu tổng hợp giọng nói (SSML) (Beta)

Nền tảng Actions on Google hỗ trợ một số tính năng SSML Beta bên cạnh các phần tử SSML tiêu chuẩn của Actions on Google.

Tóm tắt các tính năng được hỗ trợ trong bản Beta SSML:

  • <phoneme>: Tuỳ chỉnh cách phát âm của một số từ cụ thể.
  • <say-as interpret-as="duration">: Chỉ định thời lượng.
  • <voice>: Chuyển đổi giữa các giọng nói trong cùng một yêu cầu.
  • <lang>: Sử dụng nhiều ngôn ngữ trong cùng một yêu cầu.
  • Điểm thời gian: Sử dụng thẻ <mark> để trả về thời điểm của một thời điểm đã chỉ định trong bản chép lời.

<phoneme>

Bạn có thể dùng thẻ <phoneme> để tạo cách phát âm tuỳ chỉnh các từ cùng dòng. Actions on Google chấp nhận bảng chữ cái ngữ âm IPAX-SAMPA. Xem trang điện thoại để biết danh sách các ngôn ngữ và âm vị được hỗ trợ.

Mỗi ứng dụng của thẻ <phoneme> sẽ hướng dẫn cách phát âm một từ:

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

Dấu căng thẳng

Có tối đa 3 mức độ căng thẳng trong bản chép lời:

  1. Ứng suất chính: Được biểu thị bằng ˈ trong IPA và " trong X-SAMPA.
  2. Ứng suất phụ: Được biểu thị bằng ˌ trong IPA và % trong X-SAMPA.
  3. Không nhấn mạnh: Không được biểu thị bằng ký hiệu (trong cả hai ký hiệu).

Một số ngôn ngữ có thể có ít hơn 3 cấp độ hoặc hoàn toàn không biểu thị vị trí nhấn mạnh. Hãy xem trang điện thoại để biết các mức độ căng thẳng dành cho ngôn ngữ của bạn. Các điểm đánh dấu căng thẳng được đặt ở đầu mỗi âm tiết được nhấn mạnh. Ví dụ: bằng tiếng Anh Mỹ:

Từ ví dụ IPA X-SAMPA
nước ˈwɑːtɚ "wA:t@`
dưới nước ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

Bản chép lời rộng so với hẹp

Theo nguyên tắc chung, bản chép lời của bạn nên có phạm vi rộng và âm điệu hơn. Ví dụ: trong tiếng Anh (Mỹ), hãy chép lời t xen kẽ (thay vì dùng một thao tác nhấn):

Từ ví dụ IPA X-SAMPA
ˈbʌtɚ thay vì ˈbʌɾɚ "bVt@` thay vì "bV4@`

Có một số trường hợp việc sử dụng cách thể hiện âm điệu làm cho kết quả TTS nghe có vẻ không tự nhiên (ví dụ: nếu trình tự các âm vị khó phát âm).

Một ví dụ cho vấn đề này là lồng tiếng đồng hoá cho s bằng tiếng Anh. Trong trường hợp này, quá trình đồng hoá phải được phản ánh trong bản chép lời:

Từ ví dụ IPA X-SAMPA
mèo ˈkæts "k{ts
chó ˈdɑːgz thay vì ˈdɑːgs "dA:gz thay vì "dA:gs

Giảm

Mỗi âm tiết phải chứa một (và chỉ một) nguyên âm. Điều này có nghĩa là bạn nên tránh các phụ âm âm tiết mà thay vào đó hãy chép lời bằng một nguyên âm rút gọn. Ví dụ:

Từ ví dụ IPA X-SAMPA
mèo con ˈkɪtən thay vì ˈkɪtn "kIt@n thay vì "kitn
ấm đun nước ˈkɛtəl thay vì ˈkɛtl "kEt@l thay vì "kEtl

Âm tiết

Bạn có thể tuỳ ý chỉ định ranh giới âm tiết bằng cách sử dụng .. Mỗi âm tiết phải chứa một (và chỉ một) nguyên âm. Ví dụ:

Từ ví dụ IPA X-SAMPA
dễ đọc ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

Thời lượng

Nền tảng Actions on Google hỗ trợ <say-as interpret-as="duration"> để đọc chính xác thời lượng. Ví dụ: ví dụ sau sẽ được đọc là "năm giờ ba mươi phút":

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

Chuỗi định dạng hỗ trợ các giá trị sau:

Từ viết tắt Giá trị
giờ giờ
m phút
giây giây
ms mili giây

<voice>

Thẻ <voice> cho phép bạn sử dụng nhiều giọng nói trong một yêu cầu SSML. Trong ví dụ sau, giọng nói mặc định là giọng nói tiếng Anh của nam. Tất cả các từ sẽ được tổng hợp bằng giọng nói này, ngoại trừ "qu'est-ce qui t'amène ici", sẽ được đọc bằng tiếng Pháp bằng giọng nữ thay vì ngôn ngữ mặc định (tiếng Anh) và giới tính (nam).

<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>

Ngoài ra, bạn có thể sử dụng thẻ <voice> để chỉ định một giọng nói riêng (tên giọng nói trên trang giọng nói và ngôn ngữ được hỗ trợ) thay vì chỉ định language và/hoặc gender:

<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>

Khi bạn sử dụng thẻ <voice>, Actions on Google dự kiến sẽ nhận được name (tên giọng nói mà bạn muốn sử dụng) hoặc tổ hợp các thuộc tính sau. Cả ba thuộc tính là không bắt buộc nhưng bạn phải cung cấp ít nhất một thuộc tính nếu không cung cấp name.

  • gender: Một trong số male, female hoặc neutral.
  • variant: Dùng làm giải pháp quyết định trong trường hợp có nhiều khả năng sử dụng giọng nói dựa trên cấu hình của bạn.
  • language: Ngôn ngữ bạn muốn dùng. Bạn chỉ có thể chỉ định một ngôn ngữ trong một thẻ <voice> nhất định. Chọn ngôn ngữ của bạn theo định dạng BCP-47. Bạn có thể tìm thấy mã BCP-47 cho ngôn ngữ của mình trong cột mã ngôn ngữ trên trang giọng nói và ngôn ngữ được hỗ trợ.

Bạn cũng có thể kiểm soát mức độ ưu tiên tương đối của từng thuộc tính gender, variantlanguage bằng cách sử dụng 2 thẻ bổ sung: requiredordering.

  • required: Nếu một thuộc tính được chỉ định là required và không được định cấu hình đúng cách, thì yêu cầu sẽ không thành công.
  • ordering: Mọi thuộc tính liệt kê sau thẻ ordering đều được coi là thuộc tính ưu tiên thay vì thuộc tính bắt buộc. SSML sẽ xem xét các thuộc tính ưu tiên theo thứ tự được liệt kê sau thẻ ordering. Nếu có bất kỳ thuộc tính ưu tiên nào được định cấu hình không chính xác, Actions on Google vẫn có thể trả về một giọng nói hợp lệ nhưng cấu hình không chính xác bị loại bỏ.

Ví dụ về cấu hình sử dụng thẻ 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>

Bạn có thể sử dụng <lang> để đưa văn bản vào bằng nhiều ngôn ngữ trong cùng một yêu cầu SSML. Tất cả ngôn ngữ sẽ được tổng hợp theo cùng một giọng nói, trừ phi bạn sử dụng thẻ <voice> để thay đổi rõ ràng giọng nói. Chuỗi xml:lang phải chứa ngôn ngữ đích ở định dạng BCP-47 (giá trị này được liệt kê dưới dạng "mã ngôn ngữ" trong bảng các giọng nói được hỗ trợ). Trong ví dụ sau, "chat" sẽ được đọc bằng tiếng Pháp thay vì ngôn ngữ mặc định (tiếng Anh):

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

Nền tảng Actions on Google hỗ trợ thẻ <lang> trên cơ sở tối đa có thể hỗ trợ thẻ này. Không phải mọi tổ hợp ngôn ngữ đều tạo ra kết quả chất lượng như nhau nếu được chỉ định trong cùng một yêu cầu SSML. Trong một số trường hợp, sự kết hợp ngôn ngữ có thể tạo ra hiệu ứng dễ phát hiện nhưng tinh tế hoặc bị coi là tiêu cực. Vấn đề đã biết:

  • Thẻ <lang> không hỗ trợ tiếng Nhật có ký tự Kanji. Thông tin đầu vào được chuyển tự và đọc là các ký tự tiếng Trung.
  • Thẻ <lang> không hỗ trợ các ngôn ngữ tương tự như tiếng Ả Rập, Do Thái và Ba Tư nên sẽ gây ra sự im lặng. Nếu muốn sử dụng bất kỳ ngôn ngữ nào trong số này, bạn nên sử dụng thẻ <voice> để chuyển sang giọng nói bằng ngôn ngữ bạn muốn (nếu có).