kariaの日記 @ Alice::Diary

ノリツッコミの鳩子がはてなブログ書いちゃうよ

恋声もVT-4も使わずにボイチェンチャレンジに奮闘し惑星ループに辿り着くまでの話

夏から秋頃にかけて「ボイスチェンジャー流行ってるなぁ」とは思っていたんですけど、10月ごろにRoland VT-3/VT-4実機をちょっと触らせてもらいまして、あーなるほどこれは面白いねと。その後自宅環境でもちょっとお試ししてみたいなと思って環境構築のために記事を漁ってみると「高価な機材を買う前にまずは恋声で試してみよう!」と書かれているわけです。なにしろ恋声フリーソフトWindows環境さえあれば試せるわけでこれはお手軽ですね。

http://www.geocities.jp/moe_koigoe/koigoe/koigoe.html

f:id:karia:20181224063634p:plain

というわけで、この恋声Windowsマシン内蔵オンボードサウンドカードとその辺に転がっていた指向性のない安マイクで試してみました。

……おっ、すごい、確かに自分の声が変換されてる!けど、何か変換がおかしいような気がするぞ?なんでだろう、原因を突き止めたい!

ここから、2ヶ月にわたる長い長い試行錯誤の旅が始まります。

※この記事に含まれる埋込動画は音量がまちまちのため、再生の際はボリュームに充分ご注意ください。あと、これ書いてるのは音関係素人なので、多少のツッコミどころはあるかもしれません。初心者の方は他の記事もよく調べてください!!

恋声のパラメーターを変えてみる

恋声にはざっくり言うと「フォルマント」「ピッチ」という2つのパラメーターがあります。この2つの値をデフォルト値から変更して最適な値を探すところからスタートする、という流れが大半の紹介記事の出だしなのですが、実際触ってみると「2つのパラメーターを操作していい感じにする」というのはなかなか良い落としどころが見つかりません。あと、私の環境ではそもそも変換品質以前と思われる3つの問題があり、

  • 「サー」または「ギー」というノイズがかなり目立つ音量でずっと乗っている
  • 不定期にプツッ……プツッと音声変換が途切れる
  • 低い声がケロケロっとした声で変換されてしまうのが気になりすぎる

という状況でした。

喋りながら変換ボイスを聴いていると「おお~、変換されてる」という満足度が大きいのですが、後で録音した声を聞いてみると上記3つの問題のせいでずっと聞き続けるのは耳が辛い。どれから解決しようかと思って調べてみると、やはりノイズが乗っていると変換がおかしくなりやすいらしい、という情報を得ました。恋声のEffect機能でどうにかならないか試行錯誤してみたものの、良くなっているのかどうかがわからない。パラメーターもいっぱいあるし……。

マイクとサウンドバイスを変えてみる

一旦パラメーターからは離れて、考え得る原因を挙げていきましょう。

  • オンボードサウンドカードのせいでノイズが乗っている
  • 安マイクのせいでノイズが乗っている
  • PCの騒音のせいでノイズが乗っている

ふむふむなるほど。でも普段はオンボードサウンドカードで困ってないし、いきなり投資するのはちょっとなぁ、ただ、マイクのみ更新するだけならボイチャとかでもしかして使い道はあるかもしれない……

と思って調べて見たら出てきたのがコイツ。

SONY エレクトレットコンデンサーマイクロホン PC/ゲーム用 PCV80U ECM-PCV80U

SONY エレクトレットコンデンサーマイクロホン PC/ゲーム用 PCV80U ECM-PCV80U

  • USBオーディオボックス付属(オンボードサウンドカードとの切り分けが出来る)
  • 低いけどマイクスタンドあり(それなりに立派に見える)
  • 指向性あり(PCの騒音を拾いにくい)

全部解決できそう!3000円台?買いだ!!

欲しくなったらすぐにヨドバシ夜間受け取り窓口に凸!!

f:id:karia:20181224062941p:plain

その結果どうなったかというと、

  • 「サー」というノイズがずっと乗っている:オンボードより多少マシになった、しかしまだ目立つ
  • 不定期にプツッ……プツッと変換が途切れる:あまり変わらず
  • 低い声がケロケロっとした声で変換されてしまう:あまり変わらず

というわけで、ほんのちょっと改善したけれど根本的には解決せずでした。一応、オンボードサウンドカードのノイズが凄いということだけは切り分けができた。

ウインドスクリーンを装着してみる

マイクを指向性ありにした影響で、自分の息がマイクにかかることによるノイズが無視できなくなってきました。これはレビューにも書いてあったので改善のためこちらを購入。

これを装着するとこのような見た目に。

これで自分の息による「ブオー」というノイズはほとんど乗らなくなりました。もしかしてこれでプツプツとしたノイズも一緒に改善されるかも?と思ったけれど効果なし。

ソフトを変えてみる

このあたりで、「恋声で全てを調整しようとするのは難しいのでは?」という発想に至りいそいそと検索。すると、「お主、恋声以外のボイチェン動画探してるんか?ホレホレ」というYouTube様のおせっかいにより次々とレコメンドが。はい、素直に拝聴します……(動画解説かなり分かりやすくて助かる)。

www.youtube.com

恋声VSTプラグインの比較、そして導入方法まで。なるほどVSTプラグインというものがあるのか(繰り返しますがわたしは音関係に関しては素人です)。

www.youtube.com

設定値の詰め方(動画ではREAPERを利用するけど恋声にも応用可能)。そして、入力音声の周波数を表示してくれる!そうそう、これが欲しかったんだ!!

というわけで、VSTプラグインが使えるDAWソフトウェア、自分の場合はcakewalkを導入。

www.bandlab.com

これにVSTプラグインを入れることで色々音声をイジれるらしい。なるほど~。

肝となるフォルマントとピッチの変換にはRoVeeまたはKeroVeeを使用。KeroVeeのほうが細かく設定できるけどちょっとわかりにくい。

ソフトウェア - KeroVee 1.61 | g200kg Music & Software

これで、自分の声の周波数を画面上で見つつピッチ・フォルマントの値を調整することができるようになりました。ノイズが消えたわけではないけど、どの周波数でノイズが発生しているのかが見えるようになり、また特定の周波数をカットするイコライザーもグラフを見つつ細かく設定できるようになりました。これはかなりの進歩だ!

ノイズリダクションを入れる

そんなこんなで、終わらないノイズ対策とパラメーター調整で試行錯誤していたある日、ふと気付きました。

ノイズってソフトウェア処理で消せないの?

ググってみたらあっさりVSTプラグインを発見。あるんじゃん!!!

chirico-music.net

ふむふむ、REAPERを使っていない場合は、ReaPlugsというVSTプラグインを入れればよいのね。

REAPER | ReaPlugs

やってみました。サーノイズが綺麗さっぱり消えた!すごい!!

でも、当然の話なんですがボイスの音質も変わってしまいます。強くノイズリダクションをかけると「サ」行の発音が聞こえないレベルにまでなってしまいました。弱めにかけるのがポイントかな……。

まあとりあえず、ノイズはかなり抑えられて、ギリギリ聴けるんじゃないかなという感じに。ノイズが少ない箇所をピックアップして無理矢理音量を調整した音声ファイルもできたし、これどうしよう?

動画を作ってみる

そうだ、動画を作ってみよう!

動画作成については、「受肉期待age」というコメントと共にAmazonウィッシュリストから送られてきたあの本が参考になりそうです。

そう、今話題沸騰のマシーナリーとも子著のVTuber本!とりあえず見てみましょう。

スマホだけでもOK! VTuberのはじめかた

スマホだけでもOK! VTuberのはじめかた

すると、動画編集に使っているソフトは「AviUtil」って書いてあるんですね。それ知ってる!昔CMカットするのに使ってた!!わかるわ~便利だよね~。

それはわかるけど、単に1枚絵と音声ファイルからサッと動画を生成したいだけなんだけどな。CLIとかで簡単に出来ないのかな?と思っていたら、なんとか出来ちゃいました。ffmpegなら1枚絵から動画が1コマンドで作れる!簡単!!最高!!!(ffmpeg自体が沼という話は置いといて)

dev.classmethod.jp

こちらの記事を参考に、導きだされた動画生成コマンドは以下の通り。 -loop 1-shortest のオプションがなかなか検索でうまく出てこなくって難儀したのよ。ありがとうクラスメソッドさん。

ffmpeg -y -loop 1 -r 30000/1001 -i building_bigsight.bmp -i c95voice.wav  -vcodec libx264 -pix_fmt yuv420p -s 640x480 -shortest ./output.mp4

というわけで出来た動画がこちら。

www.youtube.com

ここまででやることやったのでは?という若干の達成感があったのですが、まだ音質に納得が行っていなかった(特に音声の音量が低く相対的にノイズが目立ってしまう)のと、「プツプツノイズ」問題がまだ解決していませんでした。これらの問題を解決するためには……そう、もうアイツしかない。

オーディオインターフェースを導入する

というわけで、

買っちった。

YAMAHA AG03。13965円。

だってAmazonサイバーマンデーとドコモのスーパーチャンスを合わせるとさぁ、ポイントが……(以下本題と関係無いので省略)

AG03の良い所は色々ありますが、その1つがPCマイクがそのまま流用できるということ。なので今回買ったマイクも流用できます。試しにUSBオーディオボックスをやめAG03経由でPCのDAWへ入力にしてみたところ、やっとプツプツノイズとおさらばすることが出来ました。音量のGAINも調節できるようになり、適切な音量も本体ランプで表示してくれるようになり、さらにはASIOドライバの恩恵で遅延も小さめ。

やはり安USBオーディオボックスではダメかぁ、機材にはお金をかけないとダメだね!!!あれ、当初の目標と変わってきているような。大丈夫、まだVT-4には手を出していない!(タイトル回収)

……気を取り直して、それ以外の部分も見てみましょう。サーノイズはどうなったのか。

f:id:karia:20181224061027p:plain

これがAG03導入前の様子。300Hz近辺を中心に、全体的にノイズもりもりですね。

f:id:karia:20181224061042p:plain

AG03導入後。600Hz以上のノイズが殆ど消え去ったことがわかります。600Hz~100Hzあたりも、大部分は減少したように見える。ここから、AG03備え付けの「COMP/EQ」ボタンを押すことで更に音質が改善されます。ここまで違うのかー。

で、楽しくなってきたので、歌ってみました。惑星ループ。

www.youtube.com

これを自分で聞き返していると、だいぶ良い感じになったのでは?もっと遊べるのでは??と思えてきます。生配信もしたこと無いし、イコライザーの設定は全然弄ってないし、さらに言うと自室内にノイズが多い問題は解決していないし(自宅サーバーを撤去しない限り無理)、まだまだ研究は続きそう。ただ1回の研究が録音→再生→パラメーター弄り→録音のループなので、ちょっと触っているだけで3時間とか平気で食われるのが目下の悩み。どこかでキリをつけたいなー。

謝辞

このボイスチェンジ研究にあたっては、様々な記事および動画を参考にさせていただきました。この場をお借りしてお礼申し上げます。

  • VT-3/VT-4を触らせてくれたみうゼノちゃん

www.youtube.com

  • 様々な知見を公開して下さっている魔王マグロナちゃん

www.pixiv.net

www.youtube.com

※マグロナちゃんのボイスアップデート系動画と雑談配信は参考になるお話がいっぱいなので、教えて君する前にアーカイブをちゃんと聞きましょう

  • その他恋声関連、VSTプラグイン関連の知見を公開して下さっている皆様
  • 下の動画(惑星ループを知ったのがこの動画からなので)

www.youtube.com

メンテナンス作業の手順書をつくるときの考え方

最近システムメンテナンスの手順書の作り方的な記事をちょこちょこ見かけるなーと思って、以前書きかけのものがあったので、ちょっと便乗してみようかなと。

papix.hatenablog.com

blog.tkuchiki.net

といっても自分流の「作り方」を書き出すと途方も無い長文記事になってしまうので、メンテナンス作業をやっていくぞ!手順書作るぞ!となったときに根底にある考え方を書き出してみます。

監視の通知を止めるか止めないか

大抵の商用のシステムには何らかの形で監視が入っているかと思います。メンテナンス作業の間はサービスが通常と異なる状態となるため(例えば通常はHTTPステータスコード200が返ってくるところ503が返ってくるとかね)、大抵はアラートが発生します。作業してもアラートなんて出ないよという場合は、その監視は見直した方が良いかと思います。

作業影響アラートをどう扱うかには2つの選択肢があります。

  • 抑止する:あらかじめアラートが出ない(もしくはアラートを検知しても通知しない)ように抑止しておく
  • 無視する:メンテナンスの間はアラートが出てもスルーする

どちらを採用するかはケースバイケース、システムや組織やアラート対応の枠組み*1により異なりますが、基本的には抑止する方向に倒すのではないかと思います。

わかりやすくMackerelを例に取って挙げると「ミュート」という機能がありますね。ミュートをONにしておけば、Mackerel上ではアラート発生扱いにはなるものの、Slackやメールなどの通知はされません。また、PagerDutyやTwillioもしくは人力でアラートが電話通知される枠組みになっている場合、メンテナンス期間中のアラートを抑止しておかないと業務に支障が出るレベルで電話が鳴ってしまう恐れもあります。

ただ、アラート抑止で最も恐ろしいのは「抑止の解除をし忘れる」ことです。メンテナンスが終わったあとに抑止の解除をし忘れると、本当に障害が発生したとき必要な通知が来なくなってしまいます。こんなに恐ろしいことはありませんね。ええ、恐ろしい……。

解除漏れを防ぐために考えられる方法は以下の3つ。一つ一つ見ていきましょう。

アラートの抑止をしない(静観する)

「そもそも抑止をしなければいいんだ!」という考え方。アラートの通知がメールやSlackで流れてくるだけなのであれば、メンテナンス期間中のアラートは無視すればよい、というのも一つの考え方でしょう。

これを「静観」という言い方をします。人力での監視が絡む場合は「●●時からメンテナンスのため、アラートの静観をお願いします」という依頼を出すこともあります。

抑止を時間指定にする

メンテナンス作業は通常は予定時間が決まっていますから、監視の抑止をする際にあらかじめ「●●時から××時まで抑止する」「今から90分間は抑止する」という時限設定を入れておけばアラート抑止の解除漏れがなくなります。Mackerelにも時間指定ミュート機能ありますよね(今年2月に実装されて超助かってます)。

mackerel.io

人間忘れっぽい生き物ですから、監視システムにできることは監視システムにやってもらいましょう。

手順書を上下対称で書く

どうしてもアラート通知を抑止したいけど、Mackerelは使ってないし時間指定ミュートを入れることは出来ない、でもメンテナンスはもう明日……そんなとき、初めて手順書の書き方が肝になってきます。

手順書を書く時は「上下対称になっているかどうか」を意識しながら書きます。上下対称とは?と思われるかと思いますが、例えば

  • 「メンテナンスモードにする」という手順があるなら、終了時に「メンテナンスモードを解除する」という手順が必要
  • 「監視を抑止する」という手順があるなら、終了時に「抑止を解除する」という手順が必要

といった風に上下対称にすることを意識して書くと、手順書の漏れを少なくすることが出来ます。

これって、監視の話に限らず手順書に書かれるであろう作業全てに言えることだと思うんです。たとえば、データベースのダンプを取るのであればリストアできるかどうかを考える*2ロードバランサーから切り離すのであれば、元通りに組み込めるのかどうかを考える。対称にならない作業って無いはずなんですよね。対称に作業するかどうかは別として、対称に出来る作業なのかどうかを考えるのが、漏れや事故を無くす一つのコツなのではないかと思います。

予定時間と実績時間を書く

個人的にはあんまりGitHub Issueに手順書作るのって馴染みなくて、スプレッドシートに書くことが多いです。何故かというと、作業項目ごとに時間を入れる欄が欲しいんですよね。それも「開始」「終了」と「予定」「実績」で合わせて4つ。

何故かというと、現在の進捗が知りたいわけです。オンスケで進んでるのかどうかが知りたい。たとえば、

開始時刻(予定) 終了時刻(予定) 開始時刻(実績) 終了時刻(実績)
00:00 00:30 00:00 00:20
00:30 01:00 00:20

となっていたら、30分で見積もっていた作業が20分で終わったことがわかります。素晴らしいですね。

開始時刻(予定) 終了時刻(予定) 開始時刻(実績) 終了時刻(実績)
00:00 00:30 00:00 00:50
00:30 01:00 00:50

となっていたら、20分遅れで進んでいることがわかります。何があったんでしょうね。

このように、実績を入れる欄を作ることで単純に作業の進み具合がわかるわけです。予定よりも早く進む分には、後半の作業のバッファが生まれるし、メンテナンスを予定より早く終わらせられるかもしれない。予定より遅れているなら、後半のバッファで吸収できるのかどうか、作業を中止するかどうかも検討しなくてはらない。時間を意識せずにメンテナンス作業を進めること無いですよね?ってことです。

実績を書くことによるもう一つの利点は、次回の作業に活用できることです。次回また同じ作業をするかどうかわからない時こそ実績を書いておくのは大事で、実際のところ同じメンテナンス作業をするのは数ヶ月単位だったり年単位だったりすることはあるわけです。繰り返しますが人間は忘れっぽい生き物なので、数ヶ月前のことなんて覚えてません。そんなときに、過去の作業で記録しておいた実績値を見れば「この作業だったら●●時間程度で終わる」とパッと分かるわけです。

でも別にスプレッドシートにコダワリがあるわけではないのでMarkdownでその辺うまく表現できるならそれでもいいかなー。

本当にこのメンテナンス必要?

ここまで長ったらしく書いてきましたが、全部ひっくり返す事を言うと「メンテナンスによるサービス停止なんて無い方がいい」に決まってるわけです。皆さんも、一般の利用者として使っているサービスがメンテナンスしているところに遭遇したら困りますよね。なので、手順書を作りながらも「本当にこの作業必要?」「もっと停止時間短くできない?」という自分との対話が続くことになります。

たとえば2つの作業を同時に進めることで、合計3時間かかる作業が1.5時間になるとか、単純に並列化するだけで時間を短縮できませんか?「プロセスを停止する」という作業のところにkillコマンドそのものを載せておけば、文字通り秒殺できるのではないですか?メンテナンスモードに入る前に済ませておける作業はありませんか?いろんな時間短縮の工夫を考えましょう。

もっとも、その短縮の工夫が裏目に出てしまうことがないとも限りません。確実に予定したメンテナンス枠内で終わらせられるように工夫した方が、何度もメンテナンスをやり直さずに済む結果につながるケースもあるでしょうね。

結局長くなってしまった。とりとめもなくおしまい。

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

*1:例えばアラート毎に自動でチケットが起票されるような場合は、アラートが大量に出るとチケットも大量に作られて業務に支障が出るので、作業影響アラートが大量チケット起票につながらないようにうまく調整する必要がありますよね。

*2:単にバックアップとしてダンプを取る場合、その作業内ではそのダンプをリストアする事は無いかもしれません。でも、バックアップということは万一の事態が起きたらリストアしますよね、作業する前にちゃんとそのやり方抑えてますか?というお話です。

個人的によく使う主要チェーン店における2018年12月の電子マネー・コード払い・ポイントの還元率まとめ

最近流行りのコード払いで期間限定キャンペーンが増えすぎてわけわかんなくなってるので、支払方法の選択肢が多くて個人的に使いそうなチェーン店での還元率をざっとまとめ。

この記事に記載されている内容については誤りがあっても筆者は責任を負いません。またキャンペーンの内容や還元率は変更される場合があります。 ご自身でよくお確かめになってからご利用ください。

※2018/12/14追記:PayPayの「100億円あげちゃうキャンペーン」は既に終了しています。ご注意ください。

比較条件

比較時の条件は以下の通り。

  • 期間
    • 2018年12月4日9:00~2019年1月6日23:59まで
  • 各コード払いにおける残高とクレジットカードの扱い
    • LINE Payコード払い
      • 残高・ポイントでの支払のみ(LINEサービス以外で直接クレジットカードを利用することが出来ない)
    • d払い(街のお店)
      • 直接的には残高という概念が無く、電話料金合算か登録クレジットカードのどちらかを事前に選択する
      • dポイント・ドコモ口座残高は、コード表示画面で使用するかどうかを選択できる(dポイントとドコモ口座のどちらか片方のみ、併用できない模様)
    • PayPay
      • PayPay残高が不足したらYahoo!マネー残高を併用、どちらも足りなければ全額登録クレジットカードから支払い、の順序で自動適用
  • 各キャンペーンについて
    • dポイントの「×20倍」表記は、「魔法のスーパーチャンス!」エントリー済かつ買い回り15倍を達成済みの場合。通常の付与ポイント含む。ポイントで支払った分には適用されない。2019年1月6日まで。
    • PayPay 100億円あげちゃうキャンペーンは2019年3月31日まで。100億円に達した場合、終了する可能性がある。どの支払方法でも適用(PayPayボーナスでの支払分にも適用)されるように読める。
    • LINE Payコード払い促進プログラムは2019年7月31日まで。文面を読む限りはおそらくポイントで支払った分には適用されない。

もうここまでで頭痛くなってきた……。とりあえず3店舗だけ。

店舗別

ファミリーマート

  • PayPay:20.5%+α
  • d払い:10.5%+α
    • Tポイントカード0.5%+dポイント(d払い時に付与)0.5%×20倍(+支払方法に登録したクレジットカードのポイント)
  • LINE Payコード払い:4~5.5%
    • Tポイントカード0.5%+LINE Payマイカラー基本ポイント0.5%~2%+LINE Payコード払い促進プログラム3%

いきなり厄介すぎる例。現状の予定ではスーパーチャンス→PayPay→LINE Payコード払いの順にキャンペーンが終わるはずなので、この還元率だとPayPayのキャンペーンが終わったら次はLINE Payコード払いかな。相当高還元率のカードを使わない限りd払いの出番なさそう。あと、Tポイントと他の施策が本当に両方付与されるのかどうかは始まってみないとわからない(この記事を書いているのは2018年12月3日です)。

service.smt.docomo.ne.jp

さらに事態をややこしくしているのは12/10 23:59までd払いでスーパーチャンスとは別キャンペーンが行われること。とはいえそれでもPayPayより還元率低いというね。本当に厄介。

ローソン

dカード決済(iD利用時含む、但しdポイントカードの提示が別途必要) or dポイントカード提示+LINE Payコード払い時の2択。

ここで登場するのが「d払い」ではなく「dカード決済」であることに注意(別物です)。d払いの支払方法をdカードにしてもdカード決済扱いにはならないんじゃなかろうか。誰か聞いてみて。

基本的には恒久的に行われているdカード決済3% CBが大きいのでそれに頼れば良いのですが、LINE Payコード払い促進プログラムが行われている期間中は(特にマイカラーが高ランクなのであれば)LINE Payでも良いのではないでしょうか。dカード持ってるとは限らないし。

くすりの福太郎ツルハドラッググループ)

ここが厄介なのはポイントサービスデーがあって、日によって10%になるんですよね。しかも楽天ポイントとの重複付与、dポイント非対応だけどd払い対応。よく対応できるよねコレ。

  • d払い:11.5~20.5%+α
    • 福太郎ポイントカード1~10%+楽天ポイントカード0.5%+dポイント(d払い時に付与)0.5%×20倍(+支払方法に登録したクレジットカードのポイント)
  • LINE Payコード払い:5%~15.5%+α
    • 福太郎ポイントカード1~10%+楽天ポイントカード0.5%+LINE Payマイカラー基本ポイント0.5%~2%+LINE Payコード払い促進プログラム3%

※お酒など「ポイントサービスデー」対象外の品目が存在することに注意

ポイントサービスデー10%の日を狙ってd払いすればトータルで20%越えが可能。

まとめ

まとまらないので各自好きなように払って。