一部のニュースサイト(読売新聞音声ニュース)などで、合成音声によるテキスト読み上げが行われているのを見て、筆者もやりたくなってしまい、実際にブログに埋め込むところまでをやってみたので、その方法とかをここで紹介していきたいと思います!
前提事項
このブログはAmazon lightsail上にWordPressをインストールすることで稼働しています。なので、今回はWordpressの記事にpodcastを埋め込む、をゴールにします。
また、できる限り自動化することで運用を簡略化するのも前提として置きます。
ざっくりとした仕様検討
まず初めに、どんなことをやりたいかをまとめます。
mp3作成機能
ブログ記事を抽出し、mp3ファイルを作成する機能です。
- rssにアクセスし、最新記事のタイトルと記事本文を取得
- 記事タイトルと記事本文を結合
- 結合したテキストを、Googleのtext-to-speechでmp3に変換し出力する。ファイル名は1.で取得したタイトルとする。例)ブログ記事名.mp3
ファイルアップロード機能
mp3作成機能で出力したmp3をクラウドストレージにアップロードする機能です。
- mp3ファイルを読み込む
- クラウドストレージ(今回はlightsailのバケットを利用)にアップロード
mp3埋め込み機能
クラウドストレージにアップロードしたmp3ファイルを、ブログ記事に埋め込む機能です。
これについてはWordpressプラグイン「Seriously Simple Podcasting」で行うため、プログラムは不要となる。また、この部分の自動化は困難なため、mp3の埋め込みは手動で実施する。
システム構成
自動化の範囲について
Amazon lightsailで動いているので、サーバー上で稼働するツールをcronでサイクル起動すれば、基本的な部分は自動化できると考えました。しかし、前述の通り、mp3を埋め込むのは手動でやらざるを得なそうだったため、ブログ記事のmp3化→クラウドストレージにアップロードするまでを自動化範囲とすることにしました。
ツール構成図
ChatGPTに作成してもらった構成図です。手を入れようと思いましたが、これでも十分わかる気がするので、このままとします。サンキューじっぴー。

スタートはWordPress、ゴールはバケットにmp3ファイルをアップロードすることです。
面倒だったポイント
一応上の構成の通りツール化できたのですが、想定通りにいかない部分もあったので、面倒だったポイントを箇条書きで紹介しようと思います。
- 記事が長いとtext-to-speechの文字数制限に引っかかるので、分割リクエスト&結合が必要だった
- 日本語タイトルなので、アップロード後のURLが分かりづらく運用しづらい→仕方ないので、エンコード前、エンコード後を紐づけてcsv出力する機能を入れた
- Seriously Simple Podcastingプラグインが思ったよりややこしくて、mp3を埋め込むのに少し時間がかかった→これはやってるうちに慣れそう
なお、恐らく一番コード修正&検証を繰り返した部分はmp3ファイルの結合部です。結合失敗した音声ファイルを何度も削除しましたね。
運用後の懸念
一応Wordpressへの音声埋め込みはできるようになりましたが、今後の運用懸念もほんのりですが存在します。
text-to-speechはリクエスト課金
今のリクエスト量では無料枠で大丈夫だと思ってますが、筆者が頑張って記事を書けば書くほど、課金しなければならないという状態が発生します。そこまで大きい金額になることはないでしょうが、一応運用費が嵩む可能性を秘めています。
lightsailのバケットは5GBまで
正確に言うと、サイズ変更は可能ですがその分料金が高くなります。今回は5GB/1$(月)という最安根でやっていますが、これも場合によっては追加課金が必要になる可能性があります。まあこれも超えるまで数十年以上を要することになると思いますが。。
ページ表示時のリクエスト増加
2MBくらいのファイルを読み込むので、ページの表示速度はその分落ちることになります。画像を多く使う記事には音声埋め込みを行わない、等の対策をすることを念頭に入れなければ。
そもそも需要がなさそう
やる前から分かってはいましたが、そもそもブログ記事を音声で聞くことにそこまで需要はないと思います。「ブログを音声化」するのであれば、埋め込みではなくSpotifyで聞けるようにするなり、youtubeに上げるなりするほうが需要はありそうです。
あれ?なにしてんだろう俺。まあブログ記事のmp3化は生かしようがあるか。
まとめ
- 検討&実装はそこそこ楽しかった!
- 需要があるかは謎!やるにしても別のプラットフォームがよい!
- Python初めて触ったけど、プログラム初心者に勧められてる理由が良く分かった。環境構築が楽で、動かしたらすぐ結果が分かるのがいいよね。構文も分かりやすいし
最後に
Pythonは大規模な開発現場では使いづらいかなあ。先にインストールしてもらわなきゃいけないし。そういう意味だとやっぱりPowerShellが優勢!
でも、個人でPythonは全然あり。これまでずっとPowerShellだったけど、Python使うことが多くなるかも!いろいろ効率化できそうや。
コメント