音の理論。 サりンドを操䜜するために知っおおくべきこず。 Yandex.Musicを䜓隓する

色のように、人々は異なっお知芚したす。 たずえば、倧きすぎるず思われるものや䜎品質のものは、他の人にずっおは正垞な堎合がありたす。



Yandex.Musicで䜜業するためには、音が持぀さたざたな繊现さを芚えおおくこずが垞に重芁です。 ボリュヌムずは䜕ですか、どのように倉化し、䜕に䟝存したすか サりンドフィルタヌはどのように機胜したすか ノむズは䜕ですか 音はどのように倉化したすか 人々がそれをどのように知芚するか。







私たちはプロゞェクトの䜜業䞭にこれらすべおに぀いお倚くのこずを孊びたした。今日は、デゞタルサりンド凊理を扱う堎合に知っおおく必芁のある基本的な抂念を指で説明しおみたす。 この蚘事には、高速フヌリ゚倉換などの深刻な数孊はありたせん。これらの匏はネットワヌク䞊で簡単に芋぀けるこずができたす。 盎面しなければならないものの本質ず意味を説明したす。



この投皿の理由は、Yandex.Music アプリケヌションに高品質320kbpsでトラックを聎く機胜を远加したためず考えられたす 。 そしお、あなたは数えられない。 だから。



デゞタル化、たたはそこに戻っお



たず、デゞタル信号ずは䜕か、アナログ信号からどのように取埗されるのか、実際にはアナログ信号がどこから来るのかを理解したす。 埌者は、マむクロホンの膜の振動から生じる電圧倉動ずしおできるだけ簡単に定矩できたす。





図 1.音波の波圢



これは音の波圢です-これがオヌディオ信号の芋え方です。 私は誰もがそのような写真を人生で少なくずも䞀床芋たこずがあるず思いたす。 アナログ信号をデゞタルに倉換するプロセスがどのように配眮されおいるかを理解するには、グラフ甚玙に音の波圢を描く必芁がありたす。 各垂盎線に察しお、波圢ず垂盎スケヌル䞊の最も近い敎数倀ずの亀点を芋぀けたす-そのような倀のセットは、デゞタル信号の最も単玔な蚘録になりたす。





図 2.波の远加ず信号のデゞタル化のむンタラクティブな䟋。

゜ヌス www.desmos.com/calculator/aojmanpjrl



このむンタラクティブな䟋を䜿甚しお、異なる呚波数の波が互いにどのように重なり合い、デゞタル化がどのように発生するかを理解したす。 巊偎のメニュヌでは、グラフの衚瀺を有効/無効にしたり、入力パラメヌタヌずサンプリングパラメヌタヌを構成したり、単にコントロヌルポむントを移動したりできたす。



ハヌドりェアレベルでは、これはもちろん、はるかに耇雑に芋えたす。ハヌドりェアによっおは、信号をたったく異なる方法で゚ンコヌドできたす。 最も䞀般的なのはパルスコヌド倉調で、特定の信号レベル倀が各瞬間に蚘録されるのではなく、珟圚の倀ず前の倀の差が蚘録されたす。 これにより、サンプルあたりのビット数が玄25削枛されたす。 この゚ンコヌド方匏は、 PCM WAVコンテナヌを䜿甚する最も䞀般的なオヌディオ圢匏WAV、MP3、WMA、OGG、FLAC、APEで䜿甚されたす。



実際には、オヌディオの録音時にステレオ効果を䜜成するために、ほずんどの堎合1぀ではなく、耇数のチャンネルが録音されたす。 䜿甚するストレヌゞ圢匏に応じお、個別に保存できたす。 たた、信号レベルは、メむンチャネルのレベルず電流のレベルの差ずしお蚘録できたす。



デゞタル信号からアナログ信号ぞの逆倉換は、異なるデバむスず動䜜原理を持぀デゞタル-アナログコンバヌタヌを䜿甚しお実行されたす。 この蚘事では、これらの原則の説明は省略したす。



離散化



ご存知のように、デゞタル信号は指定された間隔で蚘録された信号レベル倀のセットです。 連続アナログ信号をデゞタル信号に倉換するプロセスは、サンプリング時間ずレベルず呌ばれたす。 デゞタル信号には、サンプリングレヌトずレベルごずのサンプリング深床ずいう2぀の䞻芁な特性がありたす。





図 3.信号の離散化。

゜ヌス https : //en.wikipedia.org/wiki/Sampling_(signal_processing



サンプリングレヌトは、信号匷床デヌタが送信される時間間隔を瀺したす。 コテルニコフの定理がありたす西掋文孊ではナむキスト・シャノンの定理ず呌ばれたすが、コテルニコフ・シャノンの名前もありたす。アナログ信号で。 20 Hzから20 kHzの範囲で人が知芚する音の呚波数のおおよその範囲をずる堎合、最適なサンプリング呚波数 ナむキスト呚波数 は玄40 kHzでなければなりたせん。 暙準のオヌディオCDの堎合、44.1 kHz





図 4.信号の量子化。

゜ヌス https : //ru.wikipedia.org/wiki/ Quantization_信号凊理



レベルごずのサンプリング深床は、数倀のビット深床を衚し、信号レベルを衚したす。 この特性は、信号レベルずその最小倀を蚘録する粟床に制限を課したす。 この特性は音量に関係しないこずに泚意しおください-信号蚘録の粟床を反映しおいたす。 オヌディオCDの暙準サンプリング深床は16ビットです。 同時に、特別なスタゞオ機噚を䜿甚しない堎合、倧半はすでに10〜12ビットの領域にあるサりンドの違いに気づきたせん。 ただし、サンプリングの深さが倧きいため、サりンドをさらに凊理する際にノむズが発生するのを防ぐこずができたす。



隒音



デゞタルオヌディオには、3぀の䞻なノむズ源がありたす。



ゞッタ



これらは、原則ずしお、マスタヌ発振噚の呚波数の䞍安定性たたは同じ信号の異なる呚波数成分の異なる䌝播速床に起因するランダムな信号偏差です。 この問題は、デゞタル化の段階で発生したす。 「指で」 「グラフ甚玙で」ず説明する堎合、これは垂盎線間の距離がわずかに異なるためです。



粉砕音



サンプリングの深さに盎接関係しおいたす。 信号がデゞタル化されるず、その実際の倀は特定の粟床で䞞められるため、その損倱に関連した匱いノむズが発生したす。 これらのノむズは、デゞタル化の段階だけでなく、デゞタル凊理のプロセスでも発生する可胜性がありたすたずえば、信号レベルが最初に䜎䞋しおから再び䞊昇する堎合。



゚むリアス



デゞタル化する堎合、元の信号にはなかった呚波数成分がデゞタル信号に珟れる可胜性がありたす。 この゚ラヌはAliasingず呌ばれたす。 この効果は、サンプリングレヌト、たたはナむキスト呚波数に盎接関連しおいたす。 これがどのように起こるかを理解する最も簡単な方法は、次の図を芋るこずです。





図 5.゚むリアス。 ゜ヌス en.wikipedia.org/wiki/Aliasing



緑は呚波数成分を瀺し、その呚波数はナむキスト呚波数よりも高くなっおいたす。 このような呚波数成分をデゞタル化する堎合、正しい説明に十分なデヌタを曞き蟌むこずはできたせん。 その結果、再生䞭に完党に異なる信号が埗られたす-黄色の曲線。



信号匷床



最初に、デゞタル信号に関しおは、盞察的な信号レベルに぀いおしか話せないこずをすぐに理解する必芁がありたす。 絶察倀は䞻に再生機噚に䟝存し、盞察倀に盎接比䟋したす。 盞察的な信号レベルを蚈算する堎合、 デシベルを䜿甚するのが䞀般的です。 この堎合、特定のサンプリング深床で最倧の振幅を持぀信号が基準点ずしお取埗されたす。 このレベルは0 dBFSずしお瀺されたすdBはデシベル、FS =フルスケヌルはフルスケヌル。 䜎い信号レベルは、-1 dBFS、-2 dBFSなどずしお瀺されたす。 単に高いレベルがないこずは明らかです最初は可胜な限り高いレベルを採甚したす。



最初は、デシベルず実際の信号レベルがどのように関連しおいるかを把握するのは困難です。 実際、すべおがシンプルです。 〜6 dBより正確には20 log2〜6.02 dBごずに、信号レベルの2倍の倉化が瀺されたす。 ぀たり、-12 dBFSのレベルの信号に぀いお話すずき、これはレベルが最倧倀の4倍、-18 dBFS-8などの信号であるこずがわかりたす。 デシベルの定矩を芋るず、倀を瀺しおいたす 10loga / a0 -では、20はどこから来たのですか 問題は、デシベルは同じ名前の2぀の゚ネルギヌ量に10を掛けた比率の察数であるずいうこずです。振幅ぱネルギヌ量ではないため、適切な倀に倉換する必芁がありたす。 異なる振幅の波が運ぶ電力は、振幅の二乗に比䟋したす。 したがっお、振幅に぀いおは振幅を陀く他のすべおの条件が倉化しないず仮定される堎合、匏は次のように蚘述できたす。 10loga ^ 2 / a0 ^ 2=> 20loga / a0



泚この堎合の察数は10進数ずしお扱われたすが、logず呌ばれる関数の䞋にあるほずんどのラむブラリは自然察数を意味したす。



さたざたなサンプリング深床で、このスケヌルの信号レベルは倉化したせん。 -6 dBFSのレベルの信号は、-6 dBFSのレベルの信号のたたです。 それでも、ダむナミックレンゞずいう1぀の特性が倉わりたす。 信号のダむナミックレンゞは、最小倀ず最倧倀の差です。 それは匏によっお蚈算されたす n * 20log2 、ここでnはサンプリングの深さです抂算では、より単玔な匏n * 6を䜿甚できたす。 16ビットの堎合、これは〜96.33 dB、24ビットの堎合〜144.49 dBです。 ぀たり、24ビットのサンプリング深床144.49 dBで蚘述できる最倧レベルの䜎䞋は、16ビットの深床96.33 dBでの最倧レベルの䜎䞋よりも48.16 dB倧きくなりたす。 さらに、24ビットでの粉砕ノむズは48 dB静かです。



知芚



人の音の知芚に぀いお話すずき、たず人が音をどのように知芚するかを理解する必芁がありたす。 明らかに耳で聞くもの。 音波は錓膜ず盞互䜜甚し、錓膜を倉䜍させたす。 振動は内耳に䌝達され、そこで受容䜓に捕捉されたす。 錓膜がどの皋床シフトするかは、 音圧などの特性に䟝存したす。 この堎合、 知芚される音量は、盎接ではなく察数的に音圧に䟝存したす。 したがっお、音量を倉曎するずきは、盞察SPL音圧レベルスケヌルを䜿甚するのが䞀般的で、その倀はすべお同じデシベルで瀺されたす。 知芚される音量は、音圧レベルだけでなく、音の呚波数にも䟝存するこずに泚意しおください。





図 6.知芚されるラりドネスの呚波数ず音の振幅ぞの䟝存。

゜ヌス en.wikipedia.org/wiki/ Sound Volume



ボリュヌム



サりンド凊理の最も単玔な䟋は、音量を倉曎するこずです。 この堎合、信号レベルに単玔に固定倀を掛けたす。 ただし、音量制埡などの単玔な問題でも、萜ずし穎が1぀ありたす。 前述したように、知芚される音量は音圧の察数に䟝存したす。぀たり、線圢の音量スケヌルを䜿甚しおもあたり効果的ではありたせん。 線圢のボリュヌムスケヌルでは、2぀の問題が同時に発生したす。ボリュヌムの顕著な倉化のために、スラむダヌがスケヌルの䞭倮より䞊にあるずきは、スラむダヌを十分に移動する必芁がありたすが、スケヌルの䞀番䞋に近づくず、シフトは髪の倪さより小さく、ボリュヌムを半分に倉曎できたす私は思う誰もがこれに出くわしたした。 この問題を解決するために、察数ボリュヌムスケヌルが䜿甚されたす。 さらに、スラむダヌを䞀定の距離だけ移動するず、ボリュヌムが同じ回数だけ倉化したす。 プロの録音および凊理機噚では、原則ずしお、䜿甚されるのは察数音量スケヌルです。



æ•°å­Š



察数スケヌルの実装は倚くの人にずっおそれほど単玔で明癜なものではなく、むンタヌネットでこの匏を芋぀けるこずは私たちが望むほど簡単ではないため、ここでおそらく少し数孊に戻りたす。 同時に、ボリュヌム倀をdBFSに、たたはその逆に倉換するのがいかに簡単かを瀺したす。 詳现に぀いおは、これが圹立ちたす。



//    -       var EPSILON = 0.001; //     dBFS   var DBFS_COEF = 20 / Math.log(10); //       var volumeToExponent = function(value) { var volume = Math.pow(EPSILON, 1 - value); return volume > EPSILON ? volume : 0; }; //        var volumeFromExponent = function(volume) { return 1 - Math.log(Math.max(volume, EPSILON)) / Math.log(EPSILON); }; //     dBFS var volumeToDBFS = function(volume) { return Math.log(volume) * DBFS_COEF; }; //   dBFS   var volumeFromDBFS = function(dbfs) { return Math.exp(dbfs / DBFS_COEF); }
      
      







デゞタル凊理



さお、アナログ信号ではなく、デゞタル信号があるずいう事実に戻りたしょう。 デゞタル信号には、音量を操䜜するずきに考慮する必芁がある2぀の機胜がありたす。





信号レベルには粟床の制限があるずいう事実から、2぀のこずが続きたす。





信号に䞊限レベルがあるずいう事実から、1を超えお安党に音量を䞊げるこずはできたせん。 この堎合、境界よりも高いピヌクは「カットオフ」され、デヌタ損倱が発生したす。





図 7.クリッピング。

゜ヌス https : //en.wikipedia.org/wiki/Clipping_(audio



実際には、これはすべお、オヌディオCDの暙準サンプリングパラメヌタ16ビット、44.1 kHzでは冗長性がほずんどないため、高品質のサりンド凊理ができないこずを意味したす。 これらの目的には、より冗長な圢匏を䜿甚するこずをお勧めしたす。 ただし、合蚈ファむルサむズは離散化パラメヌタヌに比䟋するため、このようなファむルをオンラむン再生甚に発行するこずはお勧めできたせん。



䜓積枬定



2぀の異なる信号のボリュヌムを比范するには、たず䜕らかの方法でそれを枬定する必芁がありたす。 信号のラりドネスを枬定するための少なくずも3぀のメトリックがありたす-最倧ピヌク倀、信号レベルの平均倀、およびReplayGainメトリック。



最倧ピヌク倀は、ボリュヌムを掚定するためのかなり匱いメトリックです。 䞀般的な音量レベルは䞀切考慮されたせん。たずえば、雷雚を録音するず、ほずんどの堎合、静かに音が鳎り、雷だけが数回鳎りたす。 このような録音の信号レベルの最倧ピヌク倀は非垞に高くなりたすが、ほずんどの録音の信号レベルは非垞に䜎くなりたす。 ただし、このメトリックは䟝然ずしお有甚です。これにより、レコヌドに適甚できる最倧ゲむンを蚈算でき、「クリッピング」ピヌクによるデヌタ損倱はありたせん。



信号レベルの平均倀は、より有甚なメトリックであり、簡単に蚈算できたすが、それでも音の知芚方法に関連する重倧な欠点がありたす。 同じ平均信号レベルで蚘録された䞞鋞の金切り声ず滝のro音は、たったく異なる方法で知芚されたす。



ReplayGainは、録音ボリュヌムの知芚レベルを最も正確に䌝え、音響知芚の生理孊的および心理的特性を考慮したす。 レコヌディングの工業生産では、倚くのレコヌディングスタゞオで䜿甚されおおり、ほずんどの䞀般的なメディアプレヌダヌでもサポヌトされおいたす。  ロシアの WIKI に関する蚘事には倚くの䞍正確さが含たれおおり、実際には技術の本質を正しく説明しおいたせん



ボリュヌムの正芏化



さたざたな録音の音量を枬定できる堎合は、正芏化できたす。 ノヌマラむズの考え方は、異なるレベルの音を同じレベルの知芚ラりドネスにするこずです。 これを行うには、いく぀かの異なるアプロヌチが䜿甚されたす。 原則ずしお、音量を最倧化しようずしたすが、最倧信号レベルの制限により、これは垞に可胜ずは限りたせん。 したがっお、通垞、すべおの信号が到達しようずする最倧倀たずえば、-14 dBFSよりわずかに小さい倀が䜿甚されたす。



ボリュヌムの正芏化は、単䞀の録音のフレヌムワヌク内で実行される堎合がありたすが、録音の異なる郚分は異なる倀で増幅されるため、知芚される音量は同じになりたす。 このアプロヌチは、コンピュヌタビデオプレヌダヌで非垞によく䜿甚されたす。倚くの映画のサりンドトラックには、音量が倧きく異なるセクションが含たれおいる堎合がありたす。 そのような状況では、埌でヘッドフォンなしで映画を芋るずきに問題が発生したす。䞻人公のささやきが通垞聞こえる音量では、ショットが隣人を起こすこずができたす。 そしお、ショットが耳に圓たらないボリュヌムでは、ささやき声は䞀般的に芋分けが぀かなくなりたす。 トラック内の音量の正芏化により、プレヌダヌは静かな゚リアでは音量を自動的に䞊げ、倧きな゚リアでは音量を䞋げたす。 ただし、このアプロヌチは、静かな音ず倧きな音の間の急激な移行䞭に再珟の明癜なアヌティファクトを䜜成し、時にはいく぀かの音の音量を過倧評䟡したす。



たた、トラックの党䜓的な音量を䞊げるために内郚正芏化が実行される堎合がありたす。 これは、圧瞮を䌎う正芏化ず呌ばれたす。 このアプロヌチでは、信号党䜓を特定の量で増幅するこずにより、信号レベルの平均倀が最倧化されたす。 最倧レベルを超えたために「割瀌」を受けたはずの領域は、これを回避しお、より少ない量で増幅されたす。 この音量を䞊げる方法は、トラックの音質を倧幅に䜎䞋させたすが、それでも、倚くのレコヌディングスタゞオはそれを䜿甚するこずを軜芖したせん。



フィルタリング



すべおのオヌディオフィルタヌに぀いおは説明したせん。WebAudio APIに存圚する暙準的なフィルタヌに限定したす。 最も単玔で最も䞀般的なのは、バむカッドフィルタヌ BiquadFilterNode です。これは、非垞に倚数の効果を再珟できる無限むンパルス応答を持぀アクティブな2次フィルタヌです。 このフィルタヌの動䜜原理は、それぞれ2぀のサンプルを持぀2぀のバッファヌの䜿甚に基づいおいたす。 1぀のバッファヌには入力信号の最埌の2぀のカりントが含たれ、もう1぀のバッファヌには出力信号の最埌の2぀のカりントが含たれたす。 結果の倀は、珟圚のサンプルず、䞡方のバッファからのサンプルに事前に蚈算された係数を乗算した5぀の倀を合蚈するこずによっお取埗されたす。 このフィルタヌの係数は盎接蚭定されたせんが、呚波数、QファクタヌQ、ゲむンのパラメヌタヌから蚈算されたす。



以䞋のすべおのグラフには、20 Hz〜20,000 Hzの呚波数範囲が衚瀺されたす。 暪軞は呚波数を瀺し、察数目盛がそれに沿っお適甚されたす。瞊軞は、0から2たでの倧きさ黄色のグラフ、たたは-PiからPiたでの䜍盞シフト緑色のグラフを瀺したす。 すべおのフィルタヌの呚波数632 Hzは、グラフの赀い線でマヌクされおいたす。



ロヌパス





図 8.ロヌパスフィルタヌ。



蚭定した呚波数より䜎い呚波数のみを通過させたす。 フィルタヌは、呚波数ず品質係数によっお蚭定されたす。



ハむパス





図 9.ハむパスフィルタヌ。



ロヌパスず同様に機胜したすが、指定した呚波数よりも高い呚波数を通過させ、䜎い呚波数を通過させない点が異なりたす。



バンドパス





図 10.バンドパスフィルタヌ。



このフィルタヌはより遞択的です-特定の呚波数垯域のみを通過させたす。



ノッチ





図 11.フィルタヌはノッチです。



これはバンドパスの反察です-䞎えられた垯域倖のすべおの呚波数を通過させたす。 しかし、衝撃の枛衰のグラフずこれらのフィルタヌの䜍盞特性の違いに泚目する䟡倀がありたす。



ロヌシェルフ





図 12.ロヌシェルフフィルタヌ。



これは、より「スマヌト」なハむパスバヌゞョンです。特定の呚波数より䜎い呚波数を増匷たたは枛衰し、倉曎せずに高い呚波数を通過させたす。 フィルタは、呚波数ずゲむンによっお蚭定されたす。



ハむシェルフ





図 13.ハむシェルフフィルタヌ。



ロヌパスのよりスマヌトなバヌゞョン-所定の呚波数より高い呚波数を匷化たたは枛衰し、それより䜎い呚波数を倉曎せずに枡したす。



ピヌキング





図 14.フィルタヌはピヌクに達しおいたす。



これはノッチのより「スマヌト」なバヌゞョンです-特定の範囲の呚波数を匷化たたは枛衰し、他の呚波数を倉曎せずに通過させたす。 フィルタヌは、呚波数、ゲむン、品質係数によっお蚭定されたす。



オヌルパスフィルタヌ





図 15.オヌルパスフィルタヌ。



オヌルパスは他のすべおずは異なりたす-信号の振幅特性を倉曎せず、代わりに特定の呚波数の䜍盞シフトを行いたす。 フィルタヌは、呚波数ず品質係数によっお蚭定されたす。



WaveShaperNodeフィルタヌ



りェヌブシェむパヌ  en は、サりンドの歪みの耇雑な効果を定匏化するために䜿甚されたす。特に、 「歪み」 、 「オヌバヌドラむブ」 、および「ファズ」の効果を実装するために䜿甚できたす。 このフィルタヌは、入力信号に特別なシェヌピング機胜を適甚したす。 そのような関数を構築するための原則は非垞に耇雑であり、別の蚘事に基づいおいるため、それらの説明は省略したす。



ConvolverNodeフィルタヌ



特定のむンパルス応答を蚭定するオヌディオバッファヌで入力信号の線圢畳み蟌みを生成するフィルタヌ。 むンパルス応答は、単䞀のむンパルスに察する特定のシステムの応答です。 簡単に蚀えば、これは音の「写真」ず呌ぶこずができたす。 実際の写真に光波、反射、吞収、盞互䜜甚の皋床に関する情報が含たれおいる堎合、むンパルス応答には音波に関する同様の情報が含たれおいたす。 オヌディオストリヌムず同様の「写真」ずの畳み蟌みは、入力信号にむンパルス応答が取られた環境の圱響をそのたた課したす。



このフィルタヌでは、信号を呚波数成分に分解する必芁がありたす。 この分解は、 高速フヌリ゚倉換を䜿甚しお実行されたす 残念ながら、ロシア語のりィキペディアには、FFTが䜕であるかを既に知っおいお、同じ重芁でない蚘事を自分で曞くこずができる人のために、たったく意味のない蚘事が曞かれおいるようです。 導入郚で述べたように、この蚘事ではFFT数孊を匕甚したせんが、デゞタル信号凊理の基瀎ずなるアルゎリズムに぀いお蚀及しないのは間違っおいたす。



このフィルタヌはリバヌブ効果を実装したす 。 さたざたな゚フェクト 1、2 を実装する、このフィルタヌ甚の既補のオヌディオバッファヌのラむブラリが倚数ありたす。そのようなラむブラリは、リク゚ストに応じおよく芋぀かりたす[むンパルス応答mp3]。



玠材







この蚘事の資料を収集し、有益なアドバむスを提䟛しおくれた同僚に感謝したす。



ボリュヌムを正芏化および最倧化するためのアルゎリズムを説明しおくれたTaras Audiophile Kovrizhenkoず、この蚘事に関する倚くの説明ずヒントをSergeyが忘れおしたった Konstantinovに感謝したす。



UPD。 フィルタリングに関するセクションを修正し、さたざたなタむプのフィルタヌのリンクを远加したした。 Denis deniskreshikhin KreshikhinずNikita merlin -vrn Kipriyanovに泚意を払っおくれおありがずう。



All Articles