SpleeterのCoreML変換 その2
先日SpleeterのCoreML変換について触れましたが、同様にして5stemsのCoreML変換もうまくいきました。
早速アプリに組み込もうとしたところ、どうも今の実装だとメモリが足りなくなるので、とりあえず4stemsにしてリリースしました。
お試しください。
この後はファイルの保存に対応するか、エフェクトを実装するか考え中です。
SpleeterのCoreML変換
リリースしたExtVocalを(仕事が忙しくて)暫く放置していたら、Spleeterという凄いものが
リリースされていました。
いち早くVocalExtractorさんが取り入れていたので、自分もと思い軽い気持ちで始めたら、
TensorFlowが初めてなのと、coremltoolsで対応していないレイヤがあったりでだいぶ苦労しました。
SwitchとMergeがだいぶ曲者ですね。
tfcoremlをだいぶいじって何とか変換にこぎつけましたが、これが正解なんでしょうか。。
とりあえずExtVocalに組み込んだので近々リリース予定です。
歌マネ
カラオケで原曲の歌い方を真似てみても、どうしてもやっぱり自分の声にしか聞こえません。
何か良い方法はないか?
原曲のボーカルだけ抽出して、自分の声の周波数成分と比較したら何かコツが掴めるか?
何はともあれまずはボーカル抽出だなということで、色々調べてみました。
NMFとか色々な手法があるようですが、DeepLearningを用いた手法があるということを知り、iPhoneのCoreMLで利用できるかもということでそちらを使うことにしました。
こちらの記事を参考にさせていただきました。
Deep U-Netで自動歌声分離
https://qiita.com/xiao_ming/items/88826e576b87141c4909
自分の歌声と比較するというところには至ってませんが、ボーカル抽出に関してはいい感じに出来たと思います。
ChainerからCoreML
Chainerの学習済モデルをCoreMLに変換するのにだいぶ苦労しました
onnx_chainerで変換して
onnx_coremlで変換
でうまく行くと思いきや、BarchNormalizationを含んでるとcoremlのruntimeエラーが発生
仕方ないのでonnx_coremlを書き換えて無理やり変換したところうまく行きました
ネットで検索しても全然ヒットしませんでしたが、あんまり需要がないんですかね
Macでmikoto
3Dポージングツールのmikotoをたまに使うことがあるのですが、Macでも使えないか調べてたらPlayOnMacというのが見つかりました。
ありがたいです。
あの頃分からなかったこと
もう20年以上も昔のことなので実際にはどうだったか分かりませんが、
覚えている限り高校の数学の授業で行列を習っていた時は、それが
何の役に立つのかなど一切考えずにただ公式を覚えていました。
社会人になって趣味で3Dグラフィックスのプログラミングをする
ようになって、始めて行列って役に立つじゃんと思ったものです。
この知識はこんな仕事に役立ってるんだよということを当時教えて
もらえていればもう少し真面目に勉強したのになと今更ながら思います。
大学時代もちゃんと勉強してたかも。