Sazanami 補足ページ

(トップページに戻る)

■目次


■このページがマニュアルですか?

このページはマニュアルではありません。Sazanami のマニュアル (ヘルプ) はソフトに同梱してあります。このページはその補完の目的で出しているものです。

ヘルプの内容はブラウザで機械翻訳を通すなどして見ることができるように、こちらにも置いてあります。


■「始め」「終り」マーカーの位置はどうやって変えるのですか?

波形グラフ上で右クリック (副ボタン クリック) するとショートカット メニューが出ますが、そのメニュー項目を選んで「始め」「終り」マーカーを移動するやり方が一番覚えやすいと思います。右ボタンを放す前にドラッグで位置決めができます。

切り貼り編集、効果の適用、圧縮ファイル作成の場合に、「始め」「終り」マーカーで範囲を指定するのが、本ソフトの基本的な操作方法です。



■MP3 や他形式の圧縮ファイルを作るにはどうするのですか?

メイン ウィンドウのメニュー [編集]→[圧縮]→[MP3] 等でできます。またメニュー直下のツールバーにも同機能のアイコンがあります。

メニュー項目を選択すると出るダイアログ ボックスでビットレート等が指定できます。基本動作としては圧縮ファイルとして保存されるのは選択範囲です。

本ソフトでは MP3 等の圧縮ファイルは開くと必ず展開するため、MP3 等で保存する場合にはそれを再圧縮することになります。単に既存の MP3 ファイルの一部分だけ取り出せればよい場合は、展開→再圧縮の操作は必要でなく、しないほうが音質上有利なので、それのできる何か他のソフトを使ったほうがよいと思います。


■最初にしたほうがよい設定は何ですか?

設定ダイアログはメイン ウィンドウのメニュー [ツール]→[設定] で出ます。

●一時ファイル用フォルダ
「基本」ページ内にあります。空欄のままだと OS 既定の場所を使用しますが、空き容量のある他のパーティションを使いたい場合などに指定ができます。

●音声ファイルの編集状態を保存
「基本」ページ内にあります。開いた音声ファイルを開きっぱなしにして、次回起動時に自動で開いてくれるようにしたければ、この項目にチェックを入れます。この機能は編集状態を一時保存、後に復元する機能で、一時ファイルも残すために、その分ディスク スペースをとります。外部の音声ファイルを移動・削除すると復元できないので、編集状態の長期保存は考えないほうがよいです。

●一時ファイルのサンプル型
「品質」ページ内にあります。既定の 16 ビットのままでもよいのですが、音質やクリッピング (波形上下端のちょん切れ) を気にする場合は 32 ビット浮動小数点にできます。これは効果適用やサンプリング レート変換等で作る一時ファイルの設定です。MP3 ファイル等を展開するときは、この設定とは無関係にサンプル型を決めています。

●24 ビット再生
「再生」ページ内にあります。Vista 以降では OS の側にも再生デバイスごとに出力の設定がありますが、使用するデバイスを 24 ビットの設定にしている場合に、それと揃えたければこちらも有効にしてください。

■再生デバイスの API で音質のよいものはどれですか?

結論から述べると、再生デバイスが 48 kHz 系に加えて 44.1 kHz もサポートしていれば、再生時にサンプリング レートの使い分けができる排他モードが良いとなります。

Windows Vista 以降では OS 側のサウンド設定の中で、再生デバイスごとに、そのデバイスを共有モードで使う場合のサンプリング レート (およびサンプル ビット数) を指定できるようになっています。

複数のアプリケーションからの音やシステム音を同時に一つの再生デバイスから出せるようにするには、それら音声をミックスして一つに束ねる必要があり、そのために各音声はまず共通のサンプリング レートに変換されなければなりません。デバイスが 2 種類以上のサンプリング レートに対応している場合は、どれを使うかをユーザーが指定できます。それが共有モードのサンプリング レートです。

共有モードで再生デバイスを開いた場合は、そのデバイスは共有モードのサンプリング レートで動作します。Vista 以降では共有モードが音声デバイス (再生・録音) の基本動作モードです。過去の OS でも存在していた DirectSound API や Multimedia (waveIn/waveOut) API は Vista 以降では共有モードを使ったエミュレーションになっています。

デバイスの動作モードとしては他に排他モードがあります。排他モードの場合は開いたアプリケーションが独占的にそのデバイスを使用します。このモードの場合は、他のアプリケーションやシステムとの共有を考えていないので、デバイスを開くアプリケーションがその開くタイミングでサンプリング レートを指定できます。

再生デバイスが 48 kHz 系に加えて 44.1 kHz もサポートしている場合は、Sazanami の側では音声デバイスの API として排他モードを選んでおくと、デバイスの動作サンプリング レートを再生される音声に合わせて選ぶ挙動となるので、当該デバイスの持っている機能を活かせます。

※Sazanami の当該設定は再生デバイス・録音デバイス共通の設定です。

ただし、排他モードで再生デバイスを開くと、再生中は他のアプリケーションからの音やシステム音はそのデバイスからは出せません。


■Sazanami の場合のプロジェクトとは何ですか?

Sazanami ではアプリケーション終了時の動作として、その時点で開かれているファイル群の編集状態を保存してから終了するという動作にすることが可能です。次回起動時にはそのファイル群の編集状態が復元され、元の状態に復帰します。既定ではこの機能はオフなので、必要なら設定を変えて有効にしてください。

またこの機能を有効にしていると、アプリケーションの終了時以外にも一時ファイル用フォルダ (以下、一時フォルダ) の切り替え時には、それまでの編集状態を記録してから他の一時フォルダに移る挙動になります。メニューから他の一時フォルダを選択する、あるいは設定ダイアログで他の一時フォルダを指定すると、一時フォルダの切り替えが実行されます。移った側の一時フォルダにも編集状態が記録されていれば、それを読み込んでその編集状態を復元します。

Sazanami ではそれぞれの一時フォルダに置かれている編集状態の記録が「プロジェクト」であり、この使い方を踏まえた場合の一時フォルダの呼称を「プロジェクト フォルダ」としています。

Sazanami ではユーザーが開いた *.wav 等のファイルは原則コピーを作りませんので、そのような外部のファイルが失われてしまうと、そのファイルを必要とするプロジェクトは正常に復元できなくなります。よってプロジェクトの保持は短期間に留めることをお勧めします。


■VST プラグインは使えるのですか?

既定ではプラグインは読み込まない設定なので設定を変えてください。詳しくはソフト同梱のヘルプの説明をご覧ください。使えるプラグインは VST3 の系統です。


■検出されないクリック ノイズは手作業で修正すべきですか?

検出できずに見逃してしまうクリック ノイズについては、1 フレーム程度の狭い範囲だけを選択範囲にして実行してみるか、それで駄目なら、そのノイズ混入箇所の 1 サンプルだけわざと値を変える、つまりノイズを加算して位置を教えてあげると検出されると思います。

ドラッグでサンプルの値を変えるには波形グラフを横方向に拡大してください。1:8 以上でドラッグ可能になります。

手作業だけでノイズ混入箇所の波形を整形しても上手くノイズを消せる場合はあるでしょう。しかし大事なのは、時間波形の見た目の形状ではなく、その箇所が周辺と似たスペクトルを持つことなので、一般的には計算で波形を形成するのが望ましいと言えます。

さほど目立たないノイズであれば、細かいことは気にせずに放っておいてもいいと思います。


■上手なヒス ノイズ低減の使い方はありますか?

おそらく他のソフトも同傾向だと思いますが、この手の処理は音質を劣化させるというトレードオフがあります。必ずヘッドホン・イヤホンで聴いて確認することをお勧めします。

さほど気にならない程度のノイズならいじらないのが、おそらくベストです。いじる場合でも控えめにレベルを下げる程度にしたほうが良いです。大きく下げると一部周波数成分だけが残り、不自然な聞こえ方になる場合があります。そういうノイズの断片だけの音よりもホワイト ノイズ的な広帯域ノイズの聞こえ方のほうが自然なので、そういう聞こえ方が保たれる程度の低減に留めるのが無難です。


■時間伸縮音声をファイル保存できますか?

再生で聴けるような時間伸縮された音声は、効果としては「ピッチ/テンポ」で出力可能です。音質は再生の場合と同等です。音楽用時間伸縮装置の使用時は 18 kHz 以上の成分は出力しません。


■壊れた非圧縮 WAV を開く方法はありますか?

非圧縮 WAV がファイル内部の異常で開けない場合、以下のようにすれば強引に開くことができます。

  1. 当該ファイルの拡張子を .raw または .pcm にする。
    例: a.wav → a.wav.raw
  2. Sazanami で開くとダイアログ ボックスが出るので音声データのフォーマットとヘッダ バイト数を指定する。
    • 整数サンプル WAV のヘッダ バイト数は典型的には 44 バイトです。
    • WAV の 8 ビット サンプルは符号なし (unsigned) です。
  3. 明らかに全体として音声波形らしくない表示がされる場合は一度閉じ、違うフォーマットやヘッダ バイト数を試す。

ファイル両端部にちょっとだけ音声波形らしくないものが表示されていれば、おそらく音声波形以外の付属データです。

※WAV (RIFF/WAVE) は本当は、単にファイル先頭にヘッダを置くような形式ではなく、入れ子コンテナ形式のファイル構造です。


■サンプリング レート変換には正しいやり方がありますか?

今はもうないかもしれませんが、少なくとも昔は直線補間でサンプリング レート変換をするソフトがあったように記憶しているので簡単に説明します。直線補間は、画面にグラフを表示する目的なら問題はないのですが、聴く音としては音質を悪くするので好ましくありません。

一般にどのソフトでも、テスト波形としてインパルスを与えてサンプリング レートを変換すると、出力波形として、変換に使ったローパス フィルタの時間波形が現れます。サンプリング レートを上げるケースでは、大きく上げると判りやすいのですが、直線補間なら単なる三角形状の波形が出ます。望ましいサンプリング レート変換をしていると出力波形凸部の両脇ないし片脇に小さい波が現れ、中心から遠ざかるにつれ小さくなっていく形状を持ちます。

ローパス フィルタの時間波形 (インパルス応答)
FIR ローパス IIR ローパス

■96 kHz は 48 kHz より音がいいのですか?

サンプリング レートが 96 kHz の場合は 48 kHz までの周波数成分を録音に収めることができますが (ナイキスト周波数が 48 kHz)、この場合、上半分の帯域は人間の耳には聞こえないとされる帯域なので、1/2 ダウン サンプリングにより捨ててしまっても音質上の大きな問題は生じません。サンプリング レートが高すぎると、処理が重くなりがちで扱いにくいと思います。たたみこみ演算の場合は FIR フィルタのサンプル数が多いと誤差の蓄積も多くなることが予想されます。

※訂正:サンプリング レートが違う場合に誤差の蓄積量を単純比較せず、非可聴帯域を除外して比較するなら 96 kHz のほうが 48 kHz より誤差が大きいとはなりません。

96 kHz のほうが 48 kHz より音がいい、つまり非可聴帯域がある程度広いほうがよいというのは一面事実であるのでその理由を説明します。

非可聴帯域がある程度広ければアナログ→デジタル変換 (AD 変換) やサンプリング レート変換時に緩い特性のローパス フィルタを使えるため、可聴帯域内の音声成分のひずみや混入ノイズが少なくなることが期待できることがあり、それが理由の一つです。

※サンプリング レート変換の場合は状況により、特にオフライン処理の場合は、遮断性能の高い (緩くない特性の) ローパス フィルタを使うことが可能です。

また、量子化ノイズのスペクトルは非可聴帯域にも広がるので、非可聴帯域が広いほうが聞こえる部分だけの量子化ノイズの音量は減ることになり、この点でも非可聴帯域が広いほうが音がいいとなります。

※これは量子化ノイズが知覚可能な 8/16 ビットの場合で、24 ビットの場合は、適切なレベルで音声が記録されているならば、量子化ノイズはサンプリング レートを問わず知覚できないレベルになります。

業務で音質重視の編集が求められる場合を除き、普通の立場の人がパソコンで録音したり編集したりする場合は、面倒になるだけなので、あまりこの辺の事柄は気にしなくていいと思います。


■GPU はオーディオの処理に使えるのですか?

一般的なパソコン向けの GPU (graphics processing unit) は主に 3 次元ゲームの高速化を目的としたハードウェアですが、ある時期以降の GPU は汎用性を持たせた設計がされているので、向いている用途であればゲーム以外にも使用可能です。しかしゲームでは多用されない 64 ビットの浮動小数点演算は遅いのが普通なので、32 ビット浮動小数点もしくは整数で計算ができる用途への活用を考えることになります。

Sazanami ではリバーブ フィルタ等の FIR フィルタを用いてたたみこみ演算をするのに GPU を使用可能です。しかし CPU と同様、GPU も性能がピンキリなので速くならない場合もあります。よって既定では使わない設定になっています。

現状、ベンチマーク機能は付けていませんが、数秒程度かかる仕事をするとメイン ウィンドウ左下隅にその秒数が表示されるようになっているので、それで大まかな速度の把握はできます (5 秒程度で表示は消えます)。

作者はリサンプルにも使えるかと思い、GPU を使用するコードを実装してみましたが、単に取って付けたような実装では速くならなかったので、こちらは現時点では伏せてあります。


■dB (デシベル) とは何ですか?

音の大きさを表すのに dB (デシベル) という単位が使われますが、基準値との比率を対数で表したものなので、基準値より大きい場合は正数、小さい場合は負数、基準値と同じなら 0 dB になります。

例えば、基準値に対し振幅 2 倍は約 6 dB、1/2 倍は約 -6 dB となります。振幅 10 倍は 20 dB、1/10 倍は -20 dB です。

本ソフトでは基準値は文脈によって以下のように 2 種類を使い分けています。


■rms とは何ですか?

rms (アール エム エス) は平均音量のような意味合いの統計情報です。

rms は root mean square の略で、着目区間の波形について、二乗平均のルートをとったものです。平均を 0 と仮定した場合の標準偏差の計算方法と一致します。音声波形の場合の平均 (DC オフセット) は、普通は 0 に近い値です。


■FIR/IIR フィルタとは何ですか?

ローパス フィルタやパラメトリック EQ のような、周波数毎の振幅を増減して出力する装置がありますが、そのような装置は、出力を内部で再帰入力する仕組みがある「IIR フィルタ」と、それがない「FIR フィルタ」に大別できます。

IIR フィルタは出力を求めるときの計算量が少ないこと、FIR フィルタは直線位相という性質を持たせることができること等、それぞれに特徴や向いた用途があります。

(後は読まなくてもいいです)

IIR フィルタも FIR フィルタも、その装置の特性 (振幅特性・位相特性) を決めているのは係数のセットです。係数の個数とそれぞれの係数の具体的な値が決まれば、ローパス フィルタなら遮断周波数や遮断性能が決まることになり、ある決められた計算手順に従い任意の入力に対する出力を求めることができます。

IIR フィルタも FIR フィルタも、その方面の用語で「線形システム」とされる特徴を持ちます。ある装置が線形システムならば「インパルス応答」からその装置の特性を知ることができます。線形システムに「インパルス」という特殊な信号 (瞬間的な刺激のような信号) が入力されたときの出力がインパルス応答です。

線形システムにおける入力・出力・インパルス応答の関係は数式で示すことができますが、それが「たたみこみ」を定義する数式です。入力もインパルス応答も時間波形であり、この二つの時間波形にたたみこみという演算を適用すると、また別の時間波形が出力として生じる、そのような関係があります。

FIR フィルタの場合、そのフィルタを構成する係数群を時系列順に並べれば、それが即インパルス応答となるので、何かのインパルス応答が手元にあるなら、それを FIR フィルタの係数とし、たたみこみの定義に沿って任意の入力に対する出力を計算可能です。また、何かの設計手段を用いて望ましい周波数応答を持つ係数のセットを作り、それを使うことも当然可能です。係数の数が相当程度多い場合には、たたみこみの計算時間を短縮するために周波数領域の掛け算の形で計算を行う高速算法を用いることもあります。

IIR フィルタは一般に、同じような振幅特性を持つ FIR フィルタに比較して係数の数が少なくて済むので動作は軽いです。例えば、ある遮断性能を持つローパス フィルタの実装としては FIR より IIR のほうが動作が軽いのが普通です。しかし IIR フィルタには一般に位相特性の自由度がないので、他の条件から決まってくる位相特性を受け入れることになります。IIR フィルタの場合は論理的にインパルス応答が無限長となるので、コンピュータでは直接的には IIR フィルタのインパルス応答を扱うことができず、たたみこみの定義式通りの計算で出力を求めることはできません。

IIR は Infinite Impulse Response (無限長インパルス応答) の略、FIR は Finite Impulse Response (有限長インパルス応答) の略です。

インパルス応答の例
FIR ローパス IIR ローパス

■ノイズ シェーピングとは何ですか?

デジタル録音 (アナログ→デジタル変換) では個々のサンプルは整数にせざるを得ませんが、それにより入ってくる四捨五入の誤差が「量子化誤差」です。聞こえるならノイズなので「量子化ノイズ」とも言われます。24→16 等のビット数を落とす変換のときも量子化誤差が入ります。

16 ビットだと量子化誤差はかなり小さいのであまり気にしなくてもよいのですが、しかし音声波形と量子化誤差は無相関であるのが好ましいので、そうなるよう誘導する目的で微小振幅ノイズを加える「ディザリング」という技法があります。加えるノイズは「ディザ」と呼ばれます。

さらに量子化ノイズのスペクトルを操作して、聴覚上の S/N 比を向上させる「ノイズ シェーピング」という技法があります。

※ S/N 比 (signal-to-noise ratio) = 信号とノイズの比率

人間の耳に聞こえるのはおおむね 20 kHz 以下の音なので、例えば 96 kHz のサンプリング レートでは上半分の帯域 (24 kHz 〜 48 kHz) が聴こえない帯域、非可聴帯域です。その帯域へノイズ シェーピングで量子化ノイズのパワーを押し出せば、下半分の可聴帯域では逆に S/N 比が良くなります。

CD (44.1 kHz) の場合は非可聴帯域はほとんどありませんが、人間の耳の感度が鈍い帯域に量子化ノイズのパワーを寄せることで、聴覚上の S/N 比をある程度稼ぐことが可能です。

ノイズ シェーピング フィルタは適当な特性を持たせた FIR/IIR フィルタで、これに量子化誤差とディザを通すことでスペクトルを操作しています。

下のファイル noise_shaping.flac はディザリングとノイズ シェーピングの効果を示すデモですが、次の 3 種の音を 8 ビット量子化してつなげています (各 5 秒、計 15 秒)。

  1. サイン波のみ
  2. サイン波 + ディザ
  3. サイン波 + ディザ + ノイズ シェーピング

noise_shaping.flac (44.1 kHz / 8 ビット / 15 秒)

8 ビットなので量子化ノイズとしてはそれなりに大きく、特別ボリュームを上げなくてもヘッドホン・イヤホンで聴き取れると思います。

最初のパートは振幅の小さいサイン波をただ単に四捨五入で 8 ビットにしていますが、量子化誤差の影響で音色が化けています。ディザを入れて音声信号と量子化誤差を無相関化すれば、このような現象を抑止でき、より望ましい聞こえ方に誘導できます。また、ノイズ シェーピングが施されているほうが聞こえる量子化ノイズの音量は小さくなっています。

量子化ノイズのスペクトル
ディザなし
ディザあり
ディザ
+
ノイズ シェーピング

■DSD (1 ビット オーディオ) とは何ですか?

1 ビット信号の場合は、デジタル録音には避けられない量子化ノイズをノイズ シェーピングにより非可聴帯域 (高域) に誘導し、可聴帯域 (低域) の S/N 比を確保しています。

量子化ノイズを非可聴帯域に無難に収めるには、サンプルのビット数を減らすほど、帳尻合わせで逆にサンプリング レートは上げて非可聴帯域の幅を広げる必要があり、1 ビット信号ではサンプリング レートは 2.8 MHz 等が使用されます。

究極的にビット数の少ない 1 ビットであるのはハードウェア実装上の利点があるからで、1 サンプル 1 ビットだとパソコンの CPU で波形そのものをいじる操作には向きませんが、CPU でソフト的に 1 ビット信号をマルチビット信号に変換することは可能です。変換すればマルチビットが前提の一般的なオーディオ編集ソフトで扱うことができます。

マルチビット信号から 1 ビット信号への変換も可能で、CPU を使って 1 ビットのファイルを作ることもできますが、マルチビットでの再生に困ることはないので通常はされません。

1 ビットの DAC/ADC は、CD プレイヤーとかパソコン等のサウンド機能の内部で、使用者に意識されない使われ方がされていることのほうが多いです。1 ビットでの録音も可能なレコーダーは、1 ビット信号をマルチビット信号に変換する内部機能をバイパスして 1 ビットのまま記録できる仕組みを持っています。


■FIR リバーブとは何ですか?

オーディオ効果のリバーブには大きく分けて IIR フィルタ中心の実装形態と、かなり長い FIR フィルタのみを使った実装形態があります。ここでは主に後者について説明します。

※Wikipedia では "convolution reverb" の呼称が用いられており、こちらが一般的かもしれませんが、ここでは FIR リバーブを同等の意味合いで使用します。

処理が軽いので昔からあるのが IIR 実装のリバーブで、出力を再入力する再帰ループを装置内部に持ちます。リバーブと言えば典型的には IIR 実装です。内部構造でさらに分類して Schroeder 方式とか、FDN (Feedback Delay Network) 方式といったものがあります。

IIR リバーブでは、左右チャンネルの残響波形を無相関にするやり方で、疑似的なステレオ感を出すことまではできます。

IIR リバーブを基にして、これに初期エコーを幾つか付加する機能を加えた発展形の装置を考えることもできます。その初期エコーを付加する部分を指して FIR とし、装置全体を FIR + IIR 方式のリバーブと表現することもあり得ますが、次に述べる FIR リバーブの FIR とは意味合いが違います。

FIR リバーブは、反射せずに聴き手に届く直接音から始まり、その後聞こえてくる残響がほぼ消失するまでの全体を一括りにした有限長のインパルス応答と、たたみこみ演算の実行装置から構成されます。

そのようなインパルス応答をどのような手段で用意するのかというと、現実のコンサート ホール等の室内で残響特性を実際に計測するというのと、コンピューター シミュレーションで人工的に作るという、2 種類のやり方が考えられます。

現実の室内で残響特性を計測する場合は、TSP 信号等の音を実際に当該室内で発生させ、かつ同時に録音し、その録音データからインパルス応答を抽出するようなやり方になります。

※TSP 信号 (Time Stretched Pulse) とは、インパルスの構成周波数の位相を規則的にずらし、時間的に幅のある波形に変形したもので、単なるインパルスと比較して時間幅の分だけ S/N 比が向上します。

計測された室内残響特性については、大学のサイトにサンプルとして置いてある場合もあります。ファイル フォーマットが WAV 形式のインパルス応答なら Sazanami が持っているたたみこみ演算装置を使って残響のついた音声を聴くことができます。

シミュレーション方式のインパルス応答については、Sazanami の場合を例に作成手順と特徴を下枠内に簡単に示します。

まず反射経路探索を行い、音源から 1 回以上の反射の後でマイクに入ってくるエコー群を収集します (反射音源の位置を記録していく)。探索アルゴリズムとしては beam tracing があり、これを使用しています。この反射経路探索は 2 次元の計算では採れるエコーの数が少なすぎてリアリティが出ませんので、3 次元の計算にならざるを得ません。

次にその結果を基に、直接音から残響が収束するまでの全体を包含するインパルス応答を作るためにメモリ領域を確保し、そのインパルス応答の構成要素を一つ一つ描画していきます。構成要素とは直接音およびエコー群ですが、それらの構成要素はそれぞれが独立したインパルス応答を持つ存在でもあります。その構成要素全部のインパルス応答を合算したものが FIR リバーブとしてのインパルス応答となります。

各構成要素の時間位置は正確さを優先してサンプリング間隔の整数倍に丸めずに描画していきます。丸めなしの描画ではサンプリング レートが違っても残響波形全体のアウトラインは同じになります。

本リバーブの出力は 2 チャンネル (ステレオ) なので、チャンネルごとに別々のインパルス応答を作成します。どちらにも直接音および全てのエコーを描画しますが、これらの構成要素のそれぞれが左右マイクに到達するまでの時間差が反映され、表面的な時間波形の相関性を持たないものになります。また、この時間差が音の方向を知覚する上での主な情報となります。

本リバーブでは直接音および反射経路探索で収集されたエコー群のみを構成要素とするモデルなので、各構成要素のステレオ像を合算したものが全体のステレオ像となります。つまり、できるだけ正確に各構成要素を描画すれば全体のステレオ像もそれに応じた正確さになります。また、各エコーの音量や聞こえるまでの遅延時間がシミュレーションに基づいているので、直接音 > 初期エコー > その後の残響という状態遷移が自然な流れとして形成されます。

たたみこみは、ストレートにたたみこみの定義式通りに計算すると遅いので、周波数領域の掛け算の形で計算する高速算法を使って行います。

FIR リバーブの欠点は、何よりも処理がむやみに重くなることです。また、残響がかならず有限長なので、残響の音量が十分下がらない時点でインパルス応答が終わっていると、残響が尻切れの聞こえ方になるということがあります。

IIR 実装と FIR 実装のどちらが優れているかは一概には言えませんので、許容できる計算量、聴いてみての印象、等々により使い分けされるべきでしょう。


■phase vocoder とは何ですか?

一般的な説明は Wikipedia 等に譲ることにして、ここでは Sazanami というソフトの文脈に合わせた説明をします。

phase vocoder の読みは「フェーズ ボコーダー」です。日本語としてはあまり響きが良くない感じがしますが、vocoder は「ボイス」と「コーダー」を合成した言葉です。

音声のスロー再生や早回し再生は、人が喋っているだけの内容や、トランペットやクラリネット等の単音しか出ない楽器の音だけなら、時間波形の切り貼りだけできれいな音の波形を作れます。このやり方で時間伸縮した音を再生できるソフトは多いと思います。

しかし、音楽 CD に入っているような楽曲の場合は、上述のやり方では音がきれいに出ません。協和音でも不協和音でも無加工の等倍速再生と同じような感じに聞こえる時間伸縮を実現するには、それぞれの楽器の音や歌声の基音・倍音の各周波数成分を別個に取り扱い、各成分ごとに時間伸縮の操作を加える必要があります。

このような音楽一般の内容に対応できる時間伸縮操作には確立されたやり方があって、そのやり方で時間伸縮を行う仕組みを持った装置を phase vocoder と呼んでいます。大枠で或るアルゴリズムに従って動く装置のことを phase vocoder と呼んでいるので、細かな部分に目を向ければ幾つものバリエーションがあり得ます。

動作の原理を理解して phase vocoder の仕組みを持った装置を何か作ろうとしたとき、実用レベルの音質で音が出るようにしたければ、意識して対処を盛り込む必要のある問題があり、それは以下の 2 つです。

Sazanami の作者はその道の研究者ではありませんので確かなことは言えませんが、この 2 点の問題のどちらについても、ほとんどの人が認めるような、エラーも計算量も少ない確立されたやり方は、おそらく存在しないと思います。

少なくとも Sazanami の作者の認識はそのようなものなので、Sazanami の音楽用時間伸縮装置は、自分で考えた仕組みを入れて上記 2 点の問題に対処しています。かなり時間はかかりましたが、まずまずの音質で音が出せるようになっていると思います。

※上記 2 点の問題の他に、ピッチの変化にいかに上手く追従するかといったことなど、音質を追及するなら考えるべき他の問題もあります。


■Sazanami は有料ソフトだったのですか?

何かの記事を読んで Sazanami がかつて「有料ソフトとして定評があった」かのように受け取るのは間違いなので、誤解のないように説明しておきます。Sazanami は 2006 年にシェアウェアとして v1.0 を公開していますが、その時代から個人作のソフトという位置づけでした。

その時代から窓の杜やベクターの記事こそありましたが、そういう立場のソフトはネットの世界でも人が取り上げて話題にするものではないので、定評も悪評も何もなしという状況でした。当然ほぼ収入になりませんでしたが、お金を出して支援してくださった皆さん、ありがとうございます。

その時代に、ある会社から「市販ソフトにしませんか」と誘いを受けたことはあります。店頭に置くパッケージ ソフトでは成功しないのではと思ったことや、バグを結構残してしまうことに自覚があったこと、その頃は病気で困っており、納期に合わせて動けるかどうか判断が付かなかった等で断っています。

その件により、ネット上では皆だんまりで、本ソフトについて話題にする人が全くいなくても、リアルな人間関係の中では、一部の人達の間で何か言われていた、つまり好意的な評価はある程度されていたのではないかと想像しています。

ベクターの記事 (2007 年): https://www.vector.co.jp/magazine/softnews/070628/n0706282.html


■Sazanami にはどんな特徴があるのですか?

作者が力を入れた部分はオーディオ効果のほうで、実装の難易度が高いものは、完全 FIR のリバーブ、音楽用時間伸縮装置、クリック ノイズの除去機能等です。一方 GUI は凝ったものにしようとすれば作業が果てしなく煩雑になり得るので、できるだけ簡素にする方向で作っていました。

●リバーブ

よくある IIR 主体のリバーブではありません。本ソフトでは完全な FIR 実装です。

本リバーブは、残響の構成要素を物理法則に則り計算可能な反射音 (エコー) のみというモデルを立てて (現実はもう少し複雑でしょうが)、残響をそのようなエコーの集合体として再現する考え方に基づいています。

この考え方に基づけば、そして FIR ならば、個々のエコーが左右マイクに到達するまでの時間差が正しく再現できるので、エコーの集合体である残響全体に正しいステレオ像を持たせることが可能となります。また、全てのエコーの音量や聞こえるまでの遅延時間が音響シミュレーションで得た結果に基づくので、初期エコーは FIR、残響は IIR の方式のように初期エコーと残響の音量や濃度のバランスを考える必要はなく、単に自然に決まってくるだけとなります。

エコーの反射経路計算は 2 次元で済ませようとすると採れるエコーの本数が少なすぎて駄目なので、面倒ですが 3 次元の計算とならざるを得ません。ちなみにこの計算方法は、見た文献では beam tracing と名前が付いていました。

※当然ですが、3 次元の計算といっても人間の耳は 2 つだけなので、聞こえる音は 2 次元的な広がりの音になります。

IIR 主体のリバーブと完全 FIR のリバーブとは一概に比較はできないものの、リアリティ重視で追及すると、仮想室内の音響シミュレーションの結果からインパルス応答を作る完全 FIR の実装に帰結するでしょう。この FIR 実装の問題点は処理がかなりの重量級となることです。

本リバーブについて、作者の受け止めは「豪華なおもちゃ」です。この国の人は皆だんまりなのでユーザーの受け止めは全く不明なままですが、何かの楽曲を通した音を聴いてみて楽しんでもらえればそれでいいです。ちなみに、仮想室内で響かせるものとして作者の念頭にあったのは、一つ挙げれば J.S. Bach の無伴奏バイオリン曲です。

本リバーブは入力はモノラル音を想定しています。音像を正しく聴き取るにはヘッドホン・イヤホンで聴く必要があります。

●音楽用時間伸縮装置

ピッチの変わらない時間伸縮操作を加えながら音声を再生できるソフトは幾つもあると思います。そして音声内容がスピーチなら悪くない音質で聞けると思いますが、これが音楽の場合はどうかというと、一定程度の音質を確保するための技術的な難易度はかなり上がります。

Sazanami の音楽用時間伸縮装置は phase vocoder に分類されるような仕組みを持ちますが、一音ごとの出始めの波形 (sound onset) をどのように崩さずに出力するか、チャンネル間の位相の関係をどうやって維持するのかの 2 つの問題は、自分で考えた仕組みを入れて対処しています。

音楽用時間伸縮装置をまともに機能させるためには、上述 2 点の問題に対して多少なりとも機能する仕組みを試行錯誤で探していく必要があり、随分と時間がかかりましたが、自分の考えた仕組みがそれなりに機能することが判ってほっとしています。

歌をゆっくり再生で聴くのは英語等の外国語の学習にもなると思います。

●クリック ノイズ除去機能

アナログ盤に付きものの、あるいは CD の読み出しエラーで入ってくるような、瞬間的なノイズを除去ないし目立たなくする処理の仕方は、おそらく何種類かに類型化できると思います。

本ソフトのクリック ノイズの除去機能は、波形を autoregressive モデルでとらえ、周辺とは異なる要素を持つ箇所 (ノイズ混入箇所) を特定するフィルタの作成、およびノイズ混入箇所の修正 (置換波形の生成) の 2 種類の計算が未知数数十個程度の連立方程式を組んで解くやり方になっているようなタイプです。処理は重いほうでしょうが、良好な結果が得られるやり方であると思います。探せば解説している文献は見つかりますが、理解して自力で機能するものを実装するのはなかなか難しいと思います。

●その他

音声ファイルが 30 分や 1 時間くらいの長いものでも非圧縮の WAV なら本ソフトで瞬時に開けます。開くタイミングで待たされるのが嫌な方に向いています。

3 次元のスペクトログラム表示はあまり見かけないと思いますが、Sazanami のリバーブ フィルタや採取した実在のコンサートホール等の残響特性を視覚化するのに向いています。作者にとっては重要な開発ツールの一つです。

ちなみに、メイン ウィンドウ内で大きく表示される波形グラフについては、作り始めた頃に参考にしていたのは v4 時代の GoldWave で、そのため外観が少し似ています。昔から本ソフトをご存じの方には気づいていた方もいるでしょう。

しかしソフト全体としては、他のソフトのことはあまり調べないまま作ってきたので、独自色の強いものになっているかもしれません。このジャンルのソフトに詳しい方がいたら教えてください。


■Sazanami はマルチトラック エディタですか?

Sazanami はマルチトラック エディタではありません。複数のファイルをミックスする機能は付いていますが、使いやすくはないでしょうから、おまけ機能だと思ってください。

Sazanami の場合は、何かの交響曲全楽章や、カセットテープ片面全体の録音ファイル等、長いファイルを扱うことを想定して作り始めたので、そのようなファイルを扱うのに向いています。*.wav 等の非圧縮ファイルの場合は、開いた時にファイル全体を読もうとしないので待たされることがありません。こういう仕様だと一々の波形グラフの表示更新には時間がかかるため、内部構造をこのままにしてマルチトラック的なインターフェースを持たせるのは、ちょっと無理があるかなと考えています。

以下の 3 種類のソフトは本当は違う類のソフトなので使い分けるといいと思います。


■32 ビット版と 64 ビット版で違いはありますか?

両版とも機能性は同じです。OS が 64 ビットなら、どのアプリケーションについても 32 ビット版と 64 ビット版の両方を実行可能ですが、Sazanami の場合は体感速度はどちらも同程度です。

VST プラグインや、動画コーデック等の DirectShow フィルタは DLL で実装されていますが、使うアプリケーション (EXE) が 64 ビット版なら、それと連携させる DLL も 64 ビット版でなければ認識されません。同様に 32 ビット版の場合も EXE と DLL を 32 ビット版で揃える必要があります。

細かいことを言うと、浮動小数点演算の誤差の出方は少しだけ違います。これは、32 ビット版だけ (あるいは 64 ビット版だけ) を考えた場合でも、FMA 命令の使用・不使用で誤差の出方はやはり変わるので、あまり気にしないことにしています。

Sazanami は元々 32 ビット環境しか想定しておらず、後になって 64 ビット環境に対応するための改修を行ったことから、しばらくの間は 64 ビット版特有のバグが幾つかあったのですが、現在は安定性は同程度であろうと考えています。


■どこのサイトからダウンロードしても問題はありませんか?

作者がアップロードしているのは自分の HP とベクターのライブラリだけです。

あとはよく判りませんが、ファイル サイズと MD5 チェックサムの値が元のファイルと同じなら、元のファイルと同一と考えて差し支えありません。ZIP 等で包んである場合は、その中に格納されている配布 EXE (nami*.exe) のサイズや MD5 になります。

一般論としてファイルの同一性チェックは MD5 では不十分と言われることがあるかもしれませんが、意図的な改竄がされる可能性の低いファイルは現状、MD5 で問題ないと思います。


■手作業でアンインストールできますか?

幾つかのフォルダおよびレジストリ キーを削除してください。

Windows 10/11 上で本ソフトを既定フォルダにインストールしたケースで説明します。

インストール先フォルダ(次のどちらか)

ユーザー毎の設定ファイル置き場 (どちらも同じ場所です)

スタート メニュー項目用のフォルダ (どちらも同じ場所です)

作られていれば次のレジストリ キー

アンインストーラ呼び出し用のレジストリ キー(次のどちらか)

※HKCU = HKEY_CURRENT_USER
※HKLM = HKEY_LOCAL_MACHINE


■バグ報告や要望は送ってもいいのですか?

バグは作者が気づけばいちいち直しています。しかし、ある機能を作る、または後で改変するという場合に、そのときの作業を一旦終了としてしまうと、後は努めてバグを探すことをしなくなるために、大きいバグが残っていても長く気づかないことがあります。できれば何か見つけたら報告して頂けると助かります。

要望については、電子メールで送るなり、ネット上のどこか作者から見えやすいところに書くなりしていただいていいのですが、その要望に添えられるかどうかは何とも言えません。ユーザーからのフィードバックはほぼ得られないのが実状なので、苦労して何か新しい機能を追加しても、平均的なユーザーの受け止めが判らないままとなり、また、その後の当該機能の練り上げ、見直しもできません。そのようなわけで、作者の関心から逸れたことはやりにくいというのが本当のところです。


■寄付は来ますか?

一言で言うと寄付はほぼ来ません。

来る寄付のほとんどはシェアレジなのですが、具体的な件数を示せば、2020 年 11 月から 2022 年 10 月までの 2 年間の平均が月あたり約 2 件です。どこかで話題になっていたのか、その前の 2020 年の春〜夏頃には結構来ていましたが、それでも月あたりの件数は一桁に留まっていました。

こんな感じなので、継続してお使いの方はできれば寄付で応援していただけると助かります。誰が何をするのでも、時間と労力が必要であることにご理解をいただけると幸いです。

ちなみに件数的にはシェアウェアだった頃も同じような感じでした。お金を出してくれる人の出現頻度がほぼ同じという印象です。

世の中にとって人が育つルートは幾つもあったほうが良いのですが、若い人が夢を持って同じことを始めても、すぐ嫌になってやめてしまうだろうなと思います。本当にまとまった収入にしたいなら人の善意に頼らない方策が必要であると思います。


最終更新日 2023/10/04

Copyright (c) 2023 Narumi Watanabe. All Rights Reserved.
All trademarks in this web site are properties of their respective owners.