文書の過去の版を表示しています。
since 2010-11-19
Speech Synthesis Markup Language (SSML)は W3C が標準化を進めている音声合成マークアップ言語。
W3C は 2010年9月に Speech Synthesis Markup Language (SSML) Version 1.1 を Recommendation にした。
since 2018-07-31
クラウドサービスによる(日本語対応の)音声合成。
Polly で使える SSML タグ
レキシコン(辞書カスタマイズ)も W3C Pronunciation Lexicon Specification (PLS) バージョン 1.0 準拠とのこと。
以下、AWS Polly のコンソールで確認。
日本語のテキストに PLS でユーザ辞書を適用して読み上げられる
ja.pls
<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="ja-JP"> <lexeme> <grapheme>( ^)o(^ )</grapheme> <alias>顔文字</alias> </lexeme> </lexicon>
プレーンテキスト
こんにちは ( ^)o(^ )
日本語で実行すると「こんにちは、かおもじ」と読み上げる。
alphabet に ipa と指定していても、alias 要素には関係ないようだ。
since 2018-07-31
日本語でも ipa や x-sampa で発音を指定できそうだが、あまり正しく再現されないようだ
SSML(PLSは使用せず phoneme タグで指定)
<speak><phoneme alphabet="ipa" ph='käkikɯkeko'>( ^)o(^ )</phoneme></speak>
日本語で実行すると「コーキクーケーコ」と読み上げているように聞こえる。
カナ文字で読みを指定できなさそう。 x-jeida は実装されていないようだ。
使用できる音素のリスト
PLS ファイルの記述例(英語の例)
以下 2010年から2011年にかけて書いていた記事です。
Pronunciation Lexicon Specification (PLS) は daisy でも利用される。
電子書籍変換ツール daisy-pipeline で利用可能な PLS 対応エンジンが求められている。
DAISY4はEPUB3と協調しつつ標準化を進めている。
以下、オープンソース音声合成エンジンである galateatalk および open-jtalk に基づいた PLS 実装について検討する。
スクリーンリーダー nvdajp の実装に使っている libopenjtalk および ojt-python をベースに、 仕様を確認して、プロトタイプ実装をして、 daisy-pipeline に役立ててもらえる実装に発展させたい。
TODO: 商用の日本語音声合成エンジンにおける SSML1.1 のサポート状況は?
GalateaTalk は JEIDA-62-2000 日本語テキスト音声合成用記号 を実装している。
読み表記に関して JEIDA-62-2000 は 音声認識のための読み表記 情報処理学会 試行標準 IPSJ-TS 0004:2003 (解説) とほぼ同一とされている。
GalateaTalkのテキスト解析処理の詳細 (sf.jp)
Galatea Dialog Studio のVoiceXML実装では、SSML 1.0 の一部の要素を JEIDA (JEITA) マークアップに変換して GalateaTalk に送っている。
Open JTalk はマークアップを実装していない。
誰かが作り始めているのだと思うが。。
<?xml version="1.0" encoding='utf-8' ?> <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd" xml:lang="ja"> 荒川区<sub alias="にっぽり">日暮里</sub> </speak>
サンプルを考えてみる。
<?xml version="1.0" encoding='utf-8' ?> <speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis11/synthesis.xsd" xml:lang="ja"> <token>東京都</token><token>文京区</token> 茨城県<w>かすみがうら市</w> </speak>
要確認:JEITA-2000 の発音表記文字セットの定義と、本当に下記のようにつかってもいいのかどうか。
下記ではアクセント記号「’」を使っている。
<?xml version="1.0" encoding='utf-8' ?> <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd" xml:lang="ja"> <phoneme alphabet="x-JEITA-2000" ph="と’まと"> トマト </phoneme> </speak>