スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Catalinaは10月リリース | トップページ | 唸りの対策は出来たものの »

問題は音の唸り

今は、AmuseGraphics Ver1.4.1の開発フェーズで、macOS版AGMPlayerに続き、macOS版AG-ムービーカッターのリリースも間近な感じなのだが、ピッチを固定しつつ音声の再生速度を落とす処理の音質改善については、色々とやってみたので勉強にはなったかもしれない。

ここ数日行なってきた速度変更時の音声品質の向上施策については、少なくとも、現行版よりは良くなったのだが、iMovieなんかと比べると、まだ、少し汚い感じがする。

問題となっているのは、再生速度を0.5倍以下にした場合の音声品質になるのだが、現行版では、特に何の対処も行なっていないので、0.5倍未満にした場合には、結構なノイズが乗ったりしている。

もっとも、同じ作者が制作しているAGMPlayerでは、AGM形式動画か音声ファイルの再生時には再生速度の調整が可能になっているのだが、こちらでは、0.5倍/0.25倍速にしても、AG-ムービーカッターでの速度変更時よりも、ずっと良い、感じの音声出力が行える場合が多い。

これは、AGMPlayerの0.5/0.25倍速時には、全く異なる方式を使っているからだ。

それでは、AG-ムービーカッターでも、AGMPlayerの様な方式を使えば良いじゃないか、という声も聞こえてきそうなのだが、AGMPlayerの方式にも問題はあって、あまり倍率を下げると、音声ソースによっては、聞いていられない感じの音声になってしまう場合がある訳だ。

具体的には、AGMPlayerの方式というのは、例えば、50mSecの入力音声を切り出し、それを2回再生する事で、0.5倍速相当の音声出力にしているので、音声出力では、その50mSec分の音声が繰り返し出力される格好になる訳だ。

なので、分かり易く言うと、あいうえお、のような、母音の場合、発声中には同じ周波数が繰り返されるので、上記の様な方式でも問題は発生しないのだが、かきくけこ、の様な音声の場合、発声の最初の部分が繰り返されると、ある意味、どもっている様な出力音声になってしまう訳だ。

まあ、実際には、切り出している時間が短いので、人間の声を入力する分には、どもって聞こえる様な事はないのだが、音楽データの様な場合には、綺麗な出力にはなってくれない。

で、iMovieの速度調整機能を使ってみると、やはり、0.25倍速以下にした場合には、AGMPlayerの出力よりも音質が良かったので、作者的には、AGMPlayerの方式ではなく、AG-ムービーカッターで元々採用していたFFTによるピッチ保持方式を改良して、音質を改善しようとした訳だ。

改良内容としては、まず、速度を低下させた場合、音声は低周波領域に偏る事になるので、FFTの入力にする領域時間を増やすと同時にFFTのサンプル量も増やして分解能を上げた。

更に、FFTでの周波数分析の精度を上げるために、Sin窓を使ったオーバーラップFFTを使う格好にしたのだが、その結果として、出力音質は改善したと思われるのだが、ある意味、副作用が発生した訳だ。

それは、今日の表題にした、「音の唸り」になる。

具体的には、Sin窓を適用する事で、FFT領域の両端の音声データの値は0になるのだが、FFTはオーバーラップさせているので、その両端のデータは使っていない格好になっている。

なので、例えば、0.75倍程度にした場合には、出力音に唸りは発生しないのだが、0.5倍にした場合には、聞いていて判る程度、というか、気になる程度の音の唸りが発生する。

最初、この唸りはSin窓を使っているので、その両端の音量が0になる事に起因するので仕方ないのかなあ、と、思っていたのだが、前述の様に、0.75倍にした場合には、こういう問題は発生しないので、そういう問題ではない、という事は判った。

しかし、Sin窓を外してみると、音の唸りも無くなるので、Sin窓が原因になっている事は間違いなさそうな訳だ。

それでは、これはどういう事なのか、と、鑑みてみると、音の唸りというのは、近い周波数の二つの正弦波が存在する場合に発生するのだが、逆に言えば、Sin窓により時間領域で、FFT領域の端の音量を0にするためには、周波数領域では、近い周波数の二つのデータを発生させて、敢えて、唸りを発生させる必要がある訳だ。

そして、ピッチ変更時には、これらの周波数は何倍かされるので、オーバーラップサンプリングの枠を超えて、唸りの原因を作ってしまう、のかもしれない。

「かもしれない」、と、書いているのは、上記の理屈なら、音の唸りは倍率に関係なく発生しても良さそうなのだが、前述の様に、倍率を0.75倍にした場合や、その他にも、0.5や0.25倍の様に、倍率が綺麗な2分の1の倍数ではない場合には、音の唸りは殆ど問題にならなくなっているので、その辺の理屈の理解が足りないからだ。

と、言う事で、上記の唸りの発生を抑える方法は色々とあるので、Sin窓のオーバーラップFFTを使いつつ、唸りのない出力音も得られる様になってきているので、音質的には、iMovieに近いモノが得られつつあるのだが、明日、もう1日くらいは、まだ、この改良に時間を使う事になる筈だ。

 

« Catalinaは10月リリース | トップページ | 唸りの対策は出来たものの »

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