スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 気持ち的には同等に出来た | トップページ | トランジションも微改良 »

処理の負荷は結構高い

今は、AmuseGraphics Ver1.4.1の開発フェーズで、macOS版AGMPlayerに続き、macOS版AG-ムービーカッターの開発中で、今回、音声の低速化用ピッチ補正処理の音質を劇的に上げたのだが、それに付随して、処理負荷は、かなり、増加している。

改良作業については、昨日の時点で完了したので、今日から、また、リリースに向けたテストを再開したのだが、ピッチ補正処理を変更したので、出力速度の変更機能なんかについても、再度、テストしている。

その結果、気がついたのだが、上記の変更により、再生速度を低速化した場合、音声出力処理が、結構、重くなっていた。

具体的には、テスト用に使用している100秒分の動画ファイルを0.1倍速にして音声のみを出力した場合、Mac mini Late 2014で、出力には約15分を要した。

つまり、高々、1分半の動画ファイルの音声出力に15分もかかった訳なのだが、100秒の動画を0.1倍速出力すると、生成される動画の時間は1000秒になるので、1000/60=16.6分な訳だ。

なので、ぎりぎり、リアルタイム生成は可能だったので、開発中には「音声ファイルの加工」機能を使ってリアルタイム再生してテストしたりもしていたのだが、その時には、処理負荷の高さには気がつかなかった訳だ。

もっとも、重くなっているだろうなあ、というのは判っていたのだが、その理由としては、高音質化のために、オーバーラップFFTを二段行う格好になったので、それだけで、2x2=4倍の負荷になるのだが、更に、リサンプリングでサンプリング周波数を2倍に上げているので、更に2倍、つまり、その他の付随処理を入れなくても、現行版よりも4x2=8倍は重くなっているのは確実だった訳だ。

と、言うことなので、音声速度を低速化する場合の処理負荷は、結構、高くなったのだが、それは必要性があっての事なので、ヨシとするつもりだ。

ただし、現状では、処理のマルチスレッド化は特に行っていないので、各種テストが一段落したら、マルチスレッド化して、リアルタイム再生時の余裕を増やす事はするかもしれない。

ちなみに、作者の公開ソフトの中には、WaveClipperというモノもあって、これについては、特に、アンチが湧く、みたいな事もなかったので、今でも、作者サイトでは、普通にダウンロード可能にしてあるのだが、フリー版の提供を終息させようとしている作者的には、基本的には、コレについても、終息の方向だ。

もっとも、作者的にも、いきなりWaveClipperを消滅させると困る場面は多々あったので、このソフトに実装してある機能は、順次、AG-ムービーカッターに持ってきている訳だ。

具体的には、前回のバージョンアップ時に追加した音声加工機能だとかミキシング機能も、その一環になるのだが、今回の逆再生/速度変更機能も、同様、という事になる。

で、録音機能自体については、前回のバージョンアップでAGMPlayerに実装したので、AGMPlayerと次バージョンのAG-ムービーカッターを併用すれば、殆どの場合、WaveClipperがなくても、困る事は無くなる。

と、言う事で、今回、音声速度の低速化用のピッチ変更処理は大幅に改善したので、本来なら、その機能の提供元であったWaveClipperについても、改良は可能なのだが、上記の通りなので、多分、WaveClipperの改良版は作らない様な気がする。

また、AGMPlayerの速度変更機能についても、改良可能なのだが、こちらについてはプレイヤーなので、少々、音質的に問題があっても気にしない、という人は多い筈なので、やはり、改良は可能なのだが、当面は、現行版のままの状態にしておく事にする。

もっとも、macOS版のリリースが完了したら、同様の変更を行ったWindows版の開発を開始する予定なのだが、Windows版AGMPlayerについては、開発の開始段階で、既に、改良後のピッチ変更ルーチンがある事になるので、高音質版の速度変更機能も、利用可能にする可能性は高い、

「も」と書いてあるのは、処理負荷的には、現行版の方が全然軽いし、今回の速度変更処理では、iMovieと同様に、変更後の音声には少しエコーがかかった感じに聞こえるという特徴(問題?)もあるので、動画プレイヤー的には、現行音声の方が望ましい、という人も多いかもしれないからだ。

にも関わらず、「も」、可能にしようとしているのは、技術的には、現行版の手法よりも今回開発した手法の方が数段高度で、例えば、現行版の方式なら、小学生でも開発可能なのに対して、今回の手法を真面目に理解して開発しようとすると、少なくとも理系の大学生レベルの知識は必要になるので、差別化要素としては、入れておきたい訳だ。

まあ、今時のソフト開発では、その原理なんかは理解しなくても、オープンソースの処理コードを持ってくれば、普通は、実装可能なので、今回の様な手法を用いているオープンソースコードを入手できれば、小学生でも、同様の処理を実装する事は可能かもしれないのだが。

 

« 気持ち的には同等に出来た | トップページ | トランジションも微改良 »

2019年10月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google