この記事は新歓ブログリレー2022の53日目のものです
前書き
こんにちは19の亀茶です
最近はどの班に所属しようかなぁと色々と悩んでいます
さてはてそんな事はおいといて、みなさんはtwitterをしてますでしょうか
自分はTLもといタイムラインをシュポシュポと何度も更新するのはもはや当たり前となってしまっています。かといってtwitterばかりを見ていては色々と支障が生じます。
そのため、目でTLを眺めるのではなく音でTLを聞こうというのが事の始まりです。
合成音声を使おう
さて皆さんは合成音声と聞いて何をはじめに思い浮かべますでしょうか
「ゆっくり」として広く親しまれているAquesTalk製の合成音声を思い浮かべる方も多いと思います
しかし今回使用するのはそれとは異なります。というのもAquesTalk製の声は商用利用しようとすると年間の料金が発生してしまいます。別に今回は個人利用なので特に料金は発生しませんが、せっかくなのでなるべくお金がかからない合成音声を使用したいです。
色々調べてみたところVOICEVOXというものを見かけました。
なんとこのソフト個人利用だろうと商用利用だろうと無料で使用することができちゃうのです。とても嬉しいですね。ただ使用するキャラごとに利用規約があるので、おおやけで使う時はきちんと確認しておきましょう。
また、このソフトは合成音声を作成する部分(エンジン)がオープンソースとして公開されているのです。そのため知識さえつければ自分も開発を手伝うことができちゃうのです。そういう背景もあってかエンジンがDockerImageとして配布されています。
Dockerを使って実現しよう
ここでDockerという言葉が出てきましたが、詳しい事は後のなろう講習会で説明されると思うので省いておきます。
ごく簡単にいうとWebサーバー等の環境をコンテナという単位で簡単に生成したり破棄したり制御したりすることができる凄いやつ、という認識でいいとおもいます。実際自分も詳しい事は分かってないです...
さて、簡単な説明も終わったのでやりたい事を簡単な図に表してみます。
Dockerを使ってVOICEVOXのサーバーを立てると、そのサーバー君に適切にTextを与えると、音声ファイルを返してくれるようになります。
次にTwitterのタイムラインを取得します。twitterのタイムラインをプログラムから取得するにはAPIというものを使用するのですが、詳しい説明はなろう講習会に任せます。
認証情報とかをよしなにしてアクセストークン等を用意するとAPIを使えるようになります。ちなみにAPIを使用してデータをもってきたりすることを、ちまたではAPIを叩くと言われているみたいです。かっこいいですね。
APIを叩いて無事タイムラインがtwitterから送られてきたら、そこから文章データだけを取ってきてVOICEVOXサーバーに投げるだけです。これでTLから音声データを作製することができるようになりました。
さて無事音声データ(.wave)を作製することができたのであとは再生するだけです。もうすこしでやりたいことが実現できますね、とても楽しみです。
...が、サウンドカードの共有に阻まれ敗北...
普通音声データを再生する場合は該当ファイルをダブルクリックすれば大丈夫だとおもいますが、今回は少し事情が異なります。
Docker上で音声ファイルを出力していて、Docker上のプログラムから音声を鳴らそうとしているのです。その対処として、パソコン本体のサウンドカードを待機常態にし、そこに音声データを飛ばして流してもらうという方法があります。
そのためにPulseAudioというソフトを使用するのですが、困ったことに自分のwindows10環境だと上手く動いてくれませんでした。
幸運なことに自分はmac環境を用意できたためmacで環境を構築することで動作するようになりました。windows環境は難しいですね...
あとがき
かわいらしい四国めたんちゃんの声で自分のTLが再生された時は感動を覚えました。これでTLをしゅぽしゅぽする生活から解放されるのかと思うとわくわくしました。
が、結局TLを読み上げてもらいながら音声化が追いついていない最新のツイートを目で追うようになってしまいました。さてはて、どうすればよいのやら...
お借りした素材
上記の「ゆっくりしていってね」画像は拾い画ですが元は↓のnicotalk&キャラ素材配付所だと思います。