音声合成マークアップ言語 - Speech Synthesis Markup Language (SSML)

| 2 min read
Author: shigeki-shoji shigeki-shojiの画像

庄司です。

現在では様々なところで、コンピュータを使用した音声合成を聞くことができます。

音声合成のマークアップ言語の仕様として、W3C による「Speech Synthesis Markup Language (SSML) Version 1.1」があります。

この SSML をサポートするサービスには次のようなものがあります。

SSML で使用できるエレメントの概説は次のとおりです。

エレメント 説明
lexicon 辞書
lookup 辞書の参照
meta メタ情報
metadata メタ情報
p パラグラフ
s センテンス
token トークン指定
w 品詞の指定
say-as 発声方法の制御
phoneme 発音記号の使用
sub 頭字語等の発音
lang 言語の指定
prosody 音量、速度、ピッチなど
voice 声の変更
emphasis 単語を強調
break 一時停止
audio 音声に合成するオーディオ
mark カスタムタグの配置
desc audio のみで使用可能でオーディオの説明

この記事では、Amazon Polly を使用した音声サンプルを用意しました。

Amazon Polly では、SSML 仕様の一部をサポートしています。

Amazon Polly は言語別にいくつかの音声が選択可能です。ここでは「Takumi, 男性」を使用してみます。

また、エンジンは、可能な限り自然で人間に似た音声を生成する「ニューラル」と自然な音声を生成する「スタンダード」があります。

音声のテキストは著作権の制約を受けない日本国憲法から引用しました。両者を聞き比べてください。

<speak>すべて国民は、法の下に平等であつて、人種、信条、性別、社会的身分又は門地により、政治的、経済的又は社会的関係において、差別されない。</speak>

ニューラルの場合です。

スタンダードの場合です。

SSML で細かく調整していない場合でもニューラルによる音声合成は自然に感じられます。

スタンダードを使用する場合は、例えば <prosody> タグを使用して音量 (volume)、話す速度 (rate)、ピッチ (pitch) 等を調整して求める品質を探索する必要がありそうです。

<speak>すべて国民は、法の下に平等であつて、人種、信条、性別、社会的身分又は門地により、政治的、経済的<prosody rate="150%">又は</prosody>社会的関係において、差別されない。</speak>

SSML のようなテキストだけで台本の定義ができるとプレゼンテーションのリハーサルや e-Learning 教材の準備あるいは最終成果物の構築に git 等のバージョン管理システムが活用でき保守性の向上が期待できます。

例えば、GitHub Actions のようなツールを使って、台本の変更をトリガとして自動的に音声ファイルを生成することや、機械翻訳を組み合わせて複数の言語を提供することも可能となります。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み (2022-12-08)
  2. AWS認定資格を12個すべて取得したので勉強したことなどをまとめます (2022-12-12)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  4. Viteベースの高速テスティングフレームワークVitestを使ってみる (2022-12-28)
  5. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  6. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  7. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  8. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する (2023-01-16)
  10. Nuxt3入門(第7回) - Nuxt3のプラグイン・ミドルウェアを使う (2022-10-23)