見出し画像

【はじめてのIT勉強会】2021年、音声合成技術がすごい話(実例あり)

本記事は【はじめてのIT勉強会 Advent Calendar 2021】2日目の記事です。

内容は、原稿付きのスライド資料から、自動で合成音声を適用したプレゼンテーション動画 を作成してみたことの紹介となります。

■ はじめに

はじめまして、さとうです。

本記事は、とある勉強会(*)で衝撃を受けた出来事から、録音なしで音声付きプレゼンテーションを公開できるWebサービスを作りはじめてみている話を書き綴ります。

サービス作りのためにいろいろ調査や検証をしていたら、今(2021年)の音声合成技術はすごいなぁと認識アップデートされたことから、記事タイトルとなりました。

#7 はじめてのIT勉強会 in 仙台(2021)【オンライン開催】

■ やってみたこと(ほぼ結論)

原稿付きのスライド資料から、自動で合成音声を適用したプレゼンテーション動画を作ってみました。

ぜひ「合成音声」がはじめての方も、久しく触れていないという方も、2021年の合成音声がどのような水準にあるか体験いただけると嬉しいです。
※ 移動中など音声を流すのが難しい方も、あとで体験いただけたら幸いです

個人的に合成音声にはじめて触れた20年前とは違い、合成音声の利用が不便のない水準に到達してきていると個人的に感じたのが、今回の衝撃的な体験(=>合成音声でのプレゼンテーションを目の当たりにしたこと)でした。

■ やってみたこと(手順)

今回やってみたことは単純で、原稿付きのスライドに自動で音声がついて公開されるという、シンプルな仕組みを実験してみました。

(1) 原稿(スピーカーノート)付のスライド資料を準備
(2) 準備した資料から合成音声を作成
(3) (1)+(2) で、音声が合成されたスライド資料を公開

■ やってみたこと(キーワード)

検証に利用した技術、サービスは以下になります。

・ CoeFont
・ Text-to-Speech
・ Slides API - Google Slides for Developers 

■ どうやったか(検証技術)

□ (1) Google Slides のスピーカーノートを取得する

まずはじめに、原稿の自動取得の可能性を確認したかったので、手軽に検証できそうな Google Slides を操作対象として決定。
環境を Google Apps Script として定め、 Slides API 利用してスピーカーノート内のテキスト情報を取得するところを検証しました。

雑ですが、あまりスピーカーノートからテキスト情報を取得する情報が見つからなかったのでサンプルコード残しておきます(動くだけのコードです、ご容赦ください。)


function getSpeakerNote({
 const presentationId = '**************'
 const presentation = Slides.Presentations.get(presentationId)
 const slides = presentation.slides.filter(slide => !slide.slideProperties.isSkipped)
 
 slides.forEach(slide => {
     slide.slideProperties.notesPage.pageElements.forEach(page => {
       if (page.shape.shapeType === 'TEXT_BOX')
         page.shape.text.textElements.forEach(el => {
           if ( el.textRun ) Logger.log(el.textRun.content)            
         })
     })
 })
}

参考
Slides API / TextElement contents
Slides API / Method: presentations.pages.get 

□ (2) CoeFont API / Text-to-Speech で音声データを作成する

原稿の自動取得に続いて、原稿を元にした合成音声の自動作成の検証です。

音声データの作成は、今年(2021年)にふと目にして記憶に残っていたサービス「CoeFont STUDIO」(*) を最初に試すことにしました。

検証は無料で利用できる「声のフォント(アリアルとミリアル)」を採用。CoeFont が用意しているAPI を活用して、Google Slides から取得した原稿情報を自動で音声化できることを確認できました(サンプルコードは公式情報を参照ください)。

CoeFont の他にも、Google の「Cloud Text-to-Speech」についてもAPIを利用することで、手軽に音声化を実現することができ、技術の選択肢が増えていることを強く実感する結果となりました。

参考
CoeFont CLOUD API (1.2.0)
Cloud Text-to-Speech の基本

「すべてのクリエイターに声を届ける」Web音声合成サービス『CoeFont STUDIO』が無料で公開を開始!

□ (3) 音声付きスライドを公開する

原稿の自動取得と、合成音声の自動作成ができたので、あとは音声が合成されたプレゼンテーションを合成して完了です(*)。
今回の成果は、冒頭のYouTube動画として公開しています。

* プレゼンテーションへの合成は、GASだけで完結できなかったので割愛します。

YouTube API 使って動画公開まで自動化しようとも考えましたが、録音なしで音声付きプレゼンテーションを公開できるWebサービスを目指した時には重要度の高くない部分だったので保留という判断です。

■ Webサービス公開までの壁

今回、結果として目的の制御・動作は実現できましたが、無料で実現できる範囲では制約が大きいことも同時に実感することになりました(技術に触れる意味では十分な範囲が提供されているので不満はまったくないです)。

各種サービスの利用契約については、作り終えて動かしてから考えればいいかなと棚上げしておこうと思います。

■ おまけ(CoeFontは良い)

CoeFont を使ってみて、もちろん、API で音声つくることも素晴らしいのですが、今回は特に以下の2点が特に秀逸な印象を受けました

・感情を表現できること
・人が音声の抑揚やテンポを調整できること

今はまだ音声原稿を作成した後、人が手動で調整することで、その真価を発揮できる段階だと感じます(そして、この手動調整がまた全体の精度向上に貢献するのだろうなと)。

自分の声のフォント化だけではなく、「合成音声」の可能性を広く感じることができるサービスで触っていて楽しかったです。

■ おわりに

改めて昨今の音声合成、自然言語処理など、「言葉」を扱う領域の技術進歩が素晴らしいなと感じる良い機会になりました。

録音なしで音声付きプレゼンテーションを公開できるWebサービスの公開は未定ですが、ゆるゆると進めていこうと思います。

興味のある方がいましたら、見守っていただければ嬉しいです。

ご拝読ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?