R Markdown で作ったスライドに R で音声を吹き込む
はじめに
R Markdown ではスライドを作ることができます。
https://kazutan.github.io/SappoRoR6/rmd_slide.html#/
とくに、reveal.js ベースの {revealjs} パッケージや remark.js ベースの {xaringan}パッケージは簡単にRの出力を含めたシンプルなスライドを作成できることから私の周りでは使っている人が多いです。
そんなスライドもプレゼンをするときは自分で喋らなければなりません。自分で喋ることの利点はたくさんあるのですが、声の調子が悪かったり、どうしてもプレゼン会場に行けない、自分で音声を録音してビデオを作ってる暇もない、という場面もあるかと思いまます。
今回は、そんなときにRでスライドに音声を吹き込んでしまおうというお話です。これでRだけでスライド作りが完結しますね!!
ただし、吹き込まれるのは自分の声ではありません。
完成品
こんな感じになります。
やりかた
スライドに音声を吹き込むのは、 {ari} パッケージ を使います。
このパッケージは、 Amazon Polly という文章読み上げサービスを介して原稿を音声に変換しスライドに吹き込んでくれます。
スライドを作る
まずはスライドがなければ始まりません。現在、{revealjs} パッケージではうまくいかないことが報告されていますので、それ以外のパッケージで適当にスライドを作りましょう。 上のビデオであれば {xaringan} パッケージで作成していますので、以下のような Rmd を作成して RStudio の knit ボタンを押すだけでhtmlファイルが出力されます。
CSS:
https://gist.github.com/ymattu/6d4b08de387e054a67cf7cb6e8f24bdf#file-for_xaringan-css
動画づくりの セットアップ
原稿を作る
読み上げてもらうための原稿をmdファイルで作りましょう。このとき、スライドの切れ目は改行で判断されるので同じスライドの文章は改行せずにつなげて書きましょう。上の動画の原稿は以下です。
AWSアカウントの取得
Amazon Polly を利用するには、AWSアカウントが必要です。アカウントを作成し、APIキーを作成してください。Amazon Polly はよほどのことがない限り無料で使えるので安心です。1
ari パッケージのインストール
CRANからインストールできます。
install.pacakges("ari")
依存プログラムのインストール
実際にスライドを作るには、幾つかの依存パッケージをインストールしておく必要があります。
- PhantomJS
- ffmpeg
PhantomJSは、スライドを一枚一枚スクショして画像にするために必要です。 webshot::install_phantomjs()
関数でインストールができます。
また、ffmeg は実際に動画にするところで使われます。 Mac であれば以下のコマンドでインストールできます。
brew install ffmpeg
その他のOSの場合は、適宜ググればインストール方法がでてきます。
環境変数の設定
先程取得したAWSのAPIキーを環境変数としてセットします。
Sys.setenv("AWS_ACCESS_KEY_ID" = "**********", "AWS_SECRET_ACCESS_KEY" = "********************", "AWS_DEFAULT_REGION" = "ap-northeast-1")
このとき、日本語で読み上げるには AWS_DEFAULT_REGION
を "ap-northeast-1"
(東京リージョン)にしておくと良いです。
いざ、音声投入
ここまでくれば、あとは ari::ari_narrate()
関数でビデオを作るだけです。このとき、原稿のファイル、スライドのファイル、声の種類、出力するビデオファイルの名前を指定します。声に関しては、日本語の男声であれば "Takumi"
、女声であれば "Mizuki"
を指定します。
音声読み上げのコツ
自動で読み上げるため、ところどころイントネーションが微妙です。とくにカタカナと英単語はおかしくなりがちです。また、漢字の読みもたまに間違えます。そんなときは、原稿の該当箇所をひらがなに直すとうまくいくことが多いです。
Enjoy!
コード
上記のコード全体は以下にあります。
-
月500万字まで無料↩