A new small #woolly update is out on TestFlight, fixing some performance issues introduced in the latest versions.
New UI enhancements
Astro support
Docker improvements
https://blog.jetbrains.com/phpstorm/2023/02/phpstorm-2023-1-eap-4/
メールマガジン執筆における音声合成の活用について
先日は音声入力についておしゃべりしましたが、今日は音声合成の話をしましょう。
音声合成一般の話ではなくて、自分が文章を書くときに、音声合成技術をどのように活用しているかという話題です。
たとえば先ほどもやってたことですけれど、結城メルマガの執筆が終わってから配信予約をする前の段階で、私は必ず音声合成による読み上げという手順を踏むようにしています。
つまり文章を書き上げてこれでいいなとなってから、音声合成のプログラムにそのテキストを与えて声にして読み上げてもらうのです。私はそれを聞きながら目で原稿ファイルの文字を追っていきます。途中の誤字脱字を見つけたら、そこで音声をいったん一時停止させて修正を行います。接続詞の間違いや無駄な表現などが見つかることもあります。その場合ももちろん修正します。
執筆をしている途中では、ほとんどの場合、自分は目でチェックするわけですが、完成した後、こうやって音声合成を使って読み上げ、耳によって再確認するのです。
目では見つからなかった間違いが耳で見つかることは非常によくあります。おそらくそれは、目では自然に読みとばしてしまっているミスなのかもしれませんね。音声で読み上げるときには、基本的に1文字も飛ばさず、追っていくことになりますから、自然と誤字脱字が見つかりやすくなるのです。
音声合成技術は、現在とても発達していて、テキストが漢字ひらがな交じりであっても、かなり正確に読み上げてくれます。専門用語は読み間違えをすることもありますが、それはほんとに少ないものです。英語が日本語に混ざっていてもそれなりに呼んでくれます。
私が使っているのは、AWSのAmazon Pollyというサービスです。Takumiというニューラル音声を利用しています。従量課金なのでほんのちょっぴりかかりますけれど、いくらぐらいでしょ…数十円くらいかな。数百円はいかなかったと思います。
ベタに書かれたテキストを読み上げるならば、ウェブインターフェースでも良いのですが、メルマガの原稿の場合には、私が独自に定めたマークアップの手がかりがあるので、そのまま読み上げさせると大変冗長になってしまいます。また、URLなどもそのまま読み上げてしまいますので、私の目的にはあまり合いません。
ですから、Amazon Pollyに入力する前に、ちょっとしたスクリプトを通して変換作業を行います。これによって無駄な読み上げが発生しないようにしているのです。たとえば、URL等は全部スキップしてしまいますし、見出しに使っている特殊文字が出てきたら「小見出し」のように読み帰るように指示をしています。
それから小技として大事なのは、テキストの行番号をところどころに入れるようにしていることです。つまり「32行目」みたいな音声手がかりがあちこちに入るようにしています。これによって、読み上げしている最中でも、エディタでその場所にジャンプしやすくなっているわけですね。
また、結城メルマガの場合は、オムニバス形式のメルマガ(つまり、複数の読みものが1つのメールに入っているメルマガ)ですので、うまく読み物単位で切り出せるようにしています。
具体的には、make lintというコマンドを入力すると、今回のメルマガに含まれている読みものの一覧がリストとして表示されます。そこで私が読み上げで欲しい読み物番号をキーボードから入力すると、その部分がAmazon Pollyに送られて音声となって帰ってくるのです。
やってきた音声はMP3のファイルになっているので、それをブラウザで表示させて、音声のオンオフボタンもウェブでブラウザから操作できるような形式に変換しています。ですから、私の操作としては、指定した読みものの番号を入力して、ちょっとだけ待って、音声オンオフのボタンを押すという手順になります。
メルマガの場合には、単純なマークアップですけれど、たとえばLaTeXの原稿の場合にはそうはいきませんね、再発見の発想法の原稿位ですと、日本語が多いので、音声合成による読み上げはうまく機能します。でも、数式がたくさん出てくる本の原稿はちょっと難しいですね。そちらはまだ実現できていなくて、今後の課題になります。数式部分を読み上げないで意味があるかというと、あまりないですし、巣思久読み上げさせる変換は大掛かりになってしまうからです。
メルマガは毎週書いていますので、もうすっかり音声合成による読み上げはワークフローの一部となっています。特に音声合成を使うぞという意識もなく、普通に音声合成を利用してチェックをしていますね。とても良いことです。
音声合成による読み上げをしたからといって、文章の品質が格段に上がるというものではありません。でも、メルマガの執筆と編集は私が1人でやっていますので、音声合成技術を使って別の視点から原稿チェックできるシステムは貴重です。
もちろん、編集者の代わりになるわけではありませんけれど、少なくとも、自分1人が目だけでチェックするよりはずっと良い効果があります。しかも時間は大してかかりません。
今日は、朝の散歩をしながら、音声合成による読み上げのお話をしました。
A new #woolly beta (#47) is available on TestFlight:
- Added new option to disable multi-column layout on iPad and Mac
- Added communities in search results
- You can now pin hashtags timelines to the main screen with no need to follow them
VS Code用の執筆機能拡張を「たんごカーソル」を公開しました。
CtrlやOptionキーと矢印キーで日本語の単語ごとにカーソルを移動させる機能拡張です。
Kudo TakuさんのTinySegmenterをSuguru Yamamotoさんの作っていたJapanese Word Handlerに組み込んでいます。
https://marketplace.visualstudio.com/items?itemName=TaiyoFujii.japanese-morpheme-handler
Laravel 10 is out 🥳 https://blog.laravel.com/laravel-v10-released #laravel
シカゴで500ドルのユニバーサルベーシックインカムを実施するのか。これは目が離せない。
コロナ禍のさまざまな補助と給付でアメリカの経済は停滞せず、それどころか上向いたという報告を読んだことがある。
実際、私の友人たちも自分たちの収入が減っている中で子供や少数者支援の公共活動を始めてたりするんだけど、コロナ禍で始まった補助を継続するよう求めていたりするし。
https://www.nytimes.com/2023/02/13/us/politics/universal-basic-income-chicago.html
PhpStormのCode Visionの表示位置がコードの上に出てきていまいちだったけど、ちゃんと右側に変更できたのでえらい。
Fedibirdでドメインの購読とかキーワードの購読使い始めたおかげで、他のMastodon使うと「あれ、ドメイン購読できない……」って頭抱える。
Software Engineer / PHP / TypeScript
簡易なサーバーサイド系WEB界隈文系エンジニア。2005年くらいからPHPを独学で学び始めた。おそらく100年経っても駆け出しエンジニア。
仕事ではPHPメイン。最近Kotlinに興味を持ち始め。
JetBrains大好きおじさん。
稀に Zennに記事書いてます http://zenn.dev/naoyukik