タグ付けされた質問 「audio」

オーディオ、または信号処理の観点から見ると、オーディオ信号は、通常は電圧としての、音声のアナログまたはデジタル表現です。

4
指数ADSRエンベロープの方程式のヘルプ
アプリケーションコードを使用して、発振器の出力の振幅を整形するための線形ADSRエンベロープを実装しました。アタック、ディケイ、リリースの持続時間とサステインレベルのパラメーターはエンベロープで設定でき、すべてが期待通りに機能します。 ただし、エンベロープのランプ形状を、ほとんどのシンセサイザーがより自然な応答に使用するものに似たものに調整したいと思います。アタックの逆指数関数とディケイとリリースの指数関数です。これらのタイプのランプ形状のエンベロープ出力値を計算するための数式を正しく取得するのに問題があります。線形ランプを計算するために、私は2ポイントフォームを使用して、アタック/ディケイ/サステイン/リリースの入力パラメーター値から派生した開始/終了 /値を接続しています。同じ開始/終了 /ポイント値を使用して、指数(標準および逆)ランプの正しい式を計算できないようです。バツxxx yyyyバツxxyyy 上記で説明した線形ランプのアプローチを示すDesmos Graphing Calculatorセッションを保存しました。 誰かが私を正しい方向に向けるのを助けることができれば、それは大いに感謝します。

1
Aウェイトの適用
特定の信号のラウドネスを計算したいのですが、このスレッドに出くわしました。A-Weightingの側面について少し混乱しています。画像を投稿することはできませんが、このサイトには必要な計算式があると思います。(Wa = 10log ...) 私が理解していないのは、実際にプログラムでそれを使用する方法です。f頻度を表す場合、値は一定のままであるため、おそらく値をハードコードできます。その場合、Waサンプル値にどのように適用し、どの値を使用しますか?パワースペクトルを計算してWINDOW_SIZE/2値を取得し、周波数帯域の各値に関連する事前計算された値を掛けWaますか、それとも間違った方法ですか?前もって感謝します。
11 algorithms  audio 

4
ボコーダーのプログラミング
"Songify"のような自分のボコーダーシンセサイザーをプログラムしたいのですが、ボコーダーアルゴリズムの単純なアルゴリズムが見つかりません。多分あなたはボコーダーがどのように機能するかについての情報を探す場所を説明したり教えたりすることができます。

2
AMDFをピッチ抽出に使用する場合の低基本波への対処方法
私は、Average Magnitude Difference Functionを使用して、準周期的なオーディオ信号の基本周波数を推定しています。AMDFは次のように定義されます Dn=1N−n∑k=nN−1|Sk−Sk−n|Dn=1N−n∑k=nN−1|Sk−Sk−n| D_n = \frac{1}{N-n}\sum_{k=n}^{N-1}|S_k - S_{k-n}| ここで、は信号の長さです。この関数は、信号がその周期に等しい量だけシフトされたときに最小値を示します。NNN これは私がピッチを抽出するために使用しているコードです(Matlabで): a = amdf(f); a = a/max(a); [p l] = findpeaks(-a, 'minpeakprominence', 0.6); pitch = round(sample_freq/l(1); ただし、私は基本周波数が非常に低いオーディオ信号を扱っています。 結果として、ピッチが2倍になる問題が発生します。検出された最小値は、信号の周期の半分(つまり、第2高調波)に対応します。 最初のピークだけでなく、最大のピークを抽出しようとしましたが、この問題が残る場合があります。低ファンダメンタルズに対処するために、コードやAMDF関数、あるいはその両方をどのように改善できますか?

3
デジタルディストーションエフェクトアルゴリズム
私はUdoZölzerによる124〜125ページのディストーションエフェクトについてのDAFXブックを読みましたが、ディストーションの適切なシミュレーションは関数によって与えられると述べています。 f(x)=x|x|(1−ex2/|x|)f(x)=x|x|(1−ex2/|x|)f(x)=\frac{x}{|x|}\left(1-e^{x^2/|x|}\right) 誰かがこの式と私たちが得る信号の種類を説明できますか? 私が理解していることから、「x」はサンプリングされた信号なので、これは一連の数値です。| x |とは 平均?各サンプル値のxの絶対値を参照していますか? したがって、この歪み効果のシミュレーションを実装したい場合は、 xの長さを知る必要があります(サンプル数で指定されます) ループでは、サンプル値ごとにこの式を計算する必要があります ループが終了した後、歪んだ信号が(デジタル形式で)表示されます その後、聞こえるようにアナログ信号に変換する必要があります。

1
超音波スピーカーの校正と校正済み信号の発信
予測可能な信号を発することを目的として超音波スピーカーを調整しようとしていますが、悲しいかな、おそらくDSP-fuが不足しているためです。 少し背景 私が持っている校正済みのレコーディングにできるだけ近いサウンドを再生できるようにしたいです。理論を理解している限り、スピーカーの伝達関数を見つけて、放出したい信号をデコンボリューションする必要があります。次のようなもの(周波数領域): X -> H -> XH どこにX放射された信号はH、スピーカーの伝達関数であり、XHあるX回H。除算(./)が与えられますH。 ここで、キャリブレーションされた信号を送信するには、次のように分割する必要がありますH。 X/H -> H -> X 何が行われたか 三脚に1 m間隔でスピーカーと校正済みマイクを配置しました。 記録された30+リニアスイープ150KHz-20KHz、長さ20ms、@ 500 KS / sで記録。 以下のMatlab / Octaveスクリプトを使用して信号を整列および平均化すると、スクリプトの下で結果の信号を確認できます。 files = dir('Mandag*'); rng = [1.5e6, 1.52e6]; [X, fs] = wavread(files(1).name, rng); X = X(:,1); for i=2:length(files) [Y, fs] = wavread(files(i).name, rng); sig = …

1
興味深いサウンドを作成するためにオーディオ信号で実行される操作の基本的なカテゴリは何ですか?
私はdspに非常に慣れていないので、この質問が意味があるかどうかはわかりません。 私が遭遇したオーディオdspへの限られた進出で: 周波数変調 振幅変調 添加剤合成 減算合成 私の質問は、これらは信号操作(特にオーディオ)の主な基本カテゴリですか? 言い換えれば、プラグインのフルスイートを備えたFL Studioが実行できるすべてのエフェクトと空想的なことを、上記の4つの操作の一連の組み合わせに分解できますか?それとももっとたくさんありますか?プラグインを備えた最新のDAWは、理論的にはこの方法で任意のカテゴリに分類できますか?上記の4つのカテゴリはそれ自体で意味がありますか?! 背景:基本的に、プログラミングとオーディオdspの両方を学習するプロジェクトとして、非常に基本的な(ただし非常に柔軟な)オーディオシンセサイザ/エディタを作成しようとしています。Javaを使用して、基本的な現実世界のシンセサイザーのようなクラスを模倣し、OscillatorやLFOなどを呼び出すことから始めましたが、何か新しいことを学ぶたびに、新しい概念をプログラムに合わせるためにすべてを書き直さなければならないことに気づきます。 ここでもう一度始めて、プログラムの基本的なオブジェクトと構造を考え出そうとしています。これを適切に行うには、これらのオブジェクトがどのように相互作用することを許可する必要があるかを知る必要があります... ありがとう! 編集* * * 有用なコメントと回答をありがとう。私はおそらくdsp側の要素を過小評価していることに気づき、単純なシンセサイザの基本的なテンプレートと構造を作成してから、それを拡張/構築することはできません。新しいことや、物事を行うための「適切な」方法を学ぶとき、私はおそらく何度も何度も何度も再構築する必要があります...それはもっと時間がかかりますが、もっと学ぶでしょうか?また、申し訳ありませんが、まだ誰にも賛成できないほどの担当者がいないようです...できるだけ早く、そうします。 編集*編集*** 少しグーグルすると、この「合成のタイプ」へのこの基本的なガイドが明らかになり、関連性があり興味深いと思いました。

1
スペクトログラムの作成
私はこのタスクのロジックを考え出そうとしており、KissFFTソースパッケージを使用して高速フーリエ変換を実行することを計画しています。これが正しいと思われる場合はお知らせください: FFT構造を割り当てます。私が使用しているウィンドウサイズはkiss_fft_alloc(N,0,NULL,NULL) どこですかN。入力バッファはN、タイプの要素の配列になりますkiss_fft_scalar。出力バッファはN/2 + 1、タイプの要素の配列になりますkiss_fft_cpx。 NPCMサンプルの数(ウィンドウサイズ)をデコードします。 各PCMサンプルについて、各チャネルの振幅(符号なしサンプル)を平均し、0から2にスケーリング(65536.0で除算)して、結果を入力バッファーに格納します。 入力バッファでウィンドウ処理(つまり、ハニング)を実行します。 入力バッファーで高速フーリエ変換を実行し、出力バッファーに格納します。実際の値を入力として使用しているため、を使用できますkiss_fftr()。 N/2出力値については、変換されたデータの2乗された大きさを取得し、次の式を使用して値をdBスケールに変換します。 10 * log10 (re * re + im * im) N/2手順6 の値をプロットします。 入力バッファの前半を破棄し、次の(ウィンドウサイズ/ 2)PCMサンプルをデコードして、データのスケーリングとウィンドウ処理を実行します。これにより、入力ウィンドウが効果的にスライドし、処理されたPCMサンプルの計算をやり直す必要がなくなります。 ステップ5にループし、すべてのサンプルが処理されるまでこれらのステップを繰り返します。 使用済みメモリをから解放しkiss_fft_alloc()ます。 FFTを実行する前に、入力ウィンドウから値を減算して、結果のDC値の大きさがゼロになるようにすることが提案されました。入力データから平均または平均を差し引くべきですか? また、ウィンドウサイズを選択するときに考慮する必要があることは何ですか?それ以外に、KissFFTの指示に従って偶数にする必要がありますが、小さなウィンドウサイズを使用することには利点があります。それはより良いグラフを提供しますか?ウィンドウサイズを大きくすると、実行する必要があるFFTの数が減ると思いますが、ウィンドウサイズを大きくすることの唯一の利点は何ですか。 xxx 提供できるあらゆるガイダンスを事前に感謝します。

4
オーディオ出力品質
ときは、デジタルデバイス(PC、ポータブルメディアプレーヤーなど)デジタル・オーディオ・ファイル(OGG、MP3、FLACなど)の音声信号出力は、常に関係なく、デバイスタイプ/ブランドの同じを果たしている、私は右ですか?したがって、音質に違いはありません。たとえば、mp3ファイルを再生するiPodがあります。別のブランドのメディアプレーヤーで同じファイルを再生する場合、それは非常に同じ信号(イコライザーやサウンドの変更なし)であるため、音質は同じになるはずです。 これは本当ですか?それが本当なら、私は音質に関する限り重要なのはヘッドホン/スピーカーだけだと思います。 PS:すべての答えは本当に素晴らしいです!私はそれらすべてを受け入れることができればいいのに
10 audio 

5
双一次変換の使用から生じる数学的な質問
これはクックブックに関連しているので、おそらく20年前に解決しようとしましたが、あきらめ、未解決の問題を思い出しました。しかし、それはかなりまっすぐ進むのですが、私はまだ泥に詰まっています。 これは、共振周波数を持つ単純なバンドパスフィルター(BPF)です。 Ω0Ω0\Omega_0と共振:QQQ H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1 H(s) = \frac{\frac{1}{Q}\frac{s}{\Omega_0}}{\left(\frac{s}{\Omega_0}\right)^2 + \frac{1}{Q}\frac{s}{\Omega_0} + 1} 共振周波数で |H(jΩ)|≤H(jΩ0)=1|H(jΩ)|≤H(jΩ0)=1 |H(j\Omega)| \le H(j\Omega_0) = 1 上部と下部のバンドエッジは次のように定義されています |H(jΩU)|2=∣∣H(jΩ02BW/2)∣∣2=12|H(jΩU)|2=|H(jΩ02BW/2)|2=12 |H(j\Omega_U)|^2 = \left|H\left(j\Omega_0 2^{BW/2} \right)\right|^2 = \tfrac12 |H(jΩL)|2=∣∣H(jΩ02−BW/2)∣∣2=12|H(jΩL)|2=|H(jΩ02−BW/2)|2=12 |H(j\Omega_L)|^2 = \left|H\left(j\Omega_0 2^{-BW/2} \right)\right|^2 = \tfrac12 これらを「ハーフパワーバンドエッジ」と呼びます。私たちはオーディオなので、オクターブ単位で帯域幅を定義し、アナログの世界では、オクターブ単位のこの帯域幅BWBWBWはQに関連しています。QQQようにます。 1Q=2BW−12BW−−−−√=2sinh(ln(2)2BW)1Q=2BW−12BW=2sinh⁡(ln⁡(2)2BW) \frac{1}{Q} = \frac{2^{BW} - 1}{\sqrt{2^{BW}}} = 2 \sinh\left( \tfrac{\ln(2)}{2} BW \right) マップする双線形変換(事前にワープした共振周波数)を使用しています。 sΩ0jΩΩ0←1tan(ω0/2)1−z−11+z−1←jtan(ω/2)tan(ω0/2)sΩ0←1tan⁡(ω0/2)1−z−11+z−1jΩΩ0←jtan⁡(ω/2)tan⁡(ω0/2)\begin{align} …

1
オーディオ信号の時間遅延の測定
誰かが私に怒鳴る前に、私はこの質問が何度も尋ねられたことを完全に理解します。既存の質問と回答をすべて読んだことは間違いありませんが、問題の一部についてはまだ混乱しています。 閉鎖的な環境で音楽を再生する音源(A)があります。Aの録音に使用しているマイクがあります。同じ特性と長さ(サンプル数)を共有する2つのwavファイルが残ります。 私の目標は、Aがマイクに到達するのにかかった時間を計算することです。 相互相関(numpy)を使用して計算を実行しようとしています: # Delay estimation corr = numpy.convolve(original_audio, recorded_audio, 'full') delay = int(len(corr)/2) - numpy.argmax(corr) distance = delay / sample_rate * 343 # sample_rate == 22050, m/s = speed of sound print("Distance full: %.2f cm" % (distance * 100)) 300,000 cmの範囲の値を一貫して取得します。スピーカーとマイクの間の距離は約2フィートです。 これはすべて私にとってはまったく新しいことなので、明らかな何かが欠けていると確信しています。 前もって感謝します。

3
ライブオーディオ入力で笛、ポップ、その他の音を検出するにはどうすればよいですか?
私はSOに関する多くの質問を読みました、そして率直に言って、それらのそれぞれはそれについて取り組む特定の方法を説明していません。「FFTを実行する」や「ゼロクロッシング」などと言う人もいます。しかし、デジタルオーディオ入力が特定の周波数の振幅の配列で構成されていることを理解しているだけです。それを超えて。 今私はナイキストの定理、周波数、振幅、フーリエ級数などを知っています、そしてそれは私がいくつかの学期の大学のプログラムでそれをした2-3年前からです。しかし、当時はフーリエの実際の使用法についてはあまり教えられていませんでした。私は、主題を理解するのに十分なことを学ぶだけで、その主題についてさらに掘り下げることはありませんでした。しかし、今、私はそれらすべてのものを使わなければならないつもりです。 これが私が検出しようとしている音のスナップショットです: 明らかに、サウンドにはユニークなグラフがあります。グラフ内の独特のとがった線から特定の特有の特性を抽出する方法を理解したいだけです。どのような振幅、周波数など。そしてどのくらいの時間-それは些細なことですが私は推測します。 わかりやすい説明リストを使って簡単な手順を教えてください-理解できない用語をググググできます。 たぶんこれ?- 入力オーディオデータを取得する スペクトログラムをプロットする ノイズのない環境で検出したいサウンドのスペクトグラムグラフを取得する そのグラフを研究する-その音のユニークな特性を描く (4)で見つかったサウンドの特性を使用して、ライブオーディオフィードでこれらの特定の特性を検出できるある種の関数を作成します 一致が見つかった場合、まあ-仕事は完了です。 アルゴリズムを磨いて、偽陰性を取り除きます。 ああABBBバツバツXZZZ 保存したい音を静かな環境でジェスチャーとしてユーザーに録音してもらうことを考えていました。そして、ユーザーは静かな時間のパディングの間だけで音を出します。録音の最初と最後に3秒。 つまり、最初の3秒間、私のシステムは現在の入力が通常の静かなバックグラウンドサウンドであることを確認します。そして、グラフの突然の変化は音声入力の開始になります。そして、それが停止すると、録音はさらに3秒間続き、その後に静かな時間のパディングが続きます。これはユーザーが手動で行います。次に、パディング時間の間のどこかで、グラフの突然の変化が続いた部分のみの特性を自動的に保存します。 したがって、その部分の特性はそのサウンドのジェスチャーデータとして保存され、後でライブオーディオフィードでその特定のサウンドを検出するために使用されます。 問題は、これらすべてを平易な英語で考えていることです。コードで効率的に実装できるように、数学と物理学について考える必要があります。何を書いてコードのどこに書けばいいのかまったくわからないのですが、SOに関する非常に多くのライブラリと質問があっても、自由に使えます。 これが長かったらごめんなさい。

2
オーディオ信号の対数フーリエ変換(LFT)
音楽をできるだけ正確に分析するようにしています。もちろんFFTを試しましたが、いくつか問題がありました。 低周波は人間の聴覚よりも解像度が非常に低いことがわかりました。この問題を解決するために非常に長い時間のFFTを試してみましたが、44100Hzのサンプルレートで8192サンプル/秒で分析しても(時間分解能の欠如を意味します)、低周波数では十分な分解能が得られませんでした。 私はいくつかの解決策があることを発見しました。 最初に、FFTビンの2次補間。 しかし、それは完璧な方法ではないようです。この方法の問題は次のとおり です。1。「freqビン間のfreqを決定する場合、補間を行うためにどの3つのビンを選択する必要がありますか?」 2.「これを行っても、結果に関する実際の追加情報はありません。補間は一種のトリッキーな方法だと知っています。」 次に、目的の頻度で各周波数ビンを抽出するので、ビンを対数的に抽出できます。 しかし、重大な計算コストの問題があります:(多分)N ^ 2。 第三に、LFT(対数フーリエ変換)。 これは対数間隔のサンプルを必要とし、信じられないほど速い速度で私が探しているものとまったく同じ結果をもたらします。/programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency しかし、そのアルゴリズムについてはわかりません。紙を理解して実装しようとしましたが、英語と数学のスキルが不足していたため不可能でした。 したがって、LFTの実装の助けが必要です。
9 audio  fft 

1
形状にクラスター化されたデータの認識
鳥のさえずりを検出して分類するためにPythonでプロジェクトに取り組んでおり、waveファイルを周波数対時間データに変換する必要がある状況にいます。これはそれほど問題ではありませんでしたが、さまざまな音節をグループに分類できるようにするには、データが特定の形にクラスター化されるときに検出する何かを書く必要があります。データがどのように見えるかを理解するために、プロットしたときにデータがどのように見えるかのイメージを次に示します。 SciPyを使用してそれらの間のピアソン相関を実行できるように、個々の音節(両側に分離がある各形状)を取得して変数または独自のファイルに保存する方法が必要です。 また、私はPythonを好みますが、別の方法でコーディングできる場合は、他の言語でコーディングすることもできます。 ありがとう!

3
エイリアス周波数の式
私のMSc Computer Scienceでマルチメディアシステムクラスを受講しています。エイリアス周波数の式を理解するのに問題があります。これは、エイリアス信号の誤解に起因する可能性があります。 エイリアス信号についての私の理解は、入力信号をアンダーサンプリングする場合(つまり、最大周波数の2倍未満のレートでサンプリングする場合)、高周波の詳細をキャプチャするのに十分な頻度でサンプリングしていないため、エイリアシングが発生する可能性があるということです。エイリアシング信号は、これらのサンプル値を取得し、それらを滑らかな曲線で結合した結果です。 したがって、生成される信号の周波数はサンプリング周波数の半分になります。これは、純粋な正弦波が1振動あたり2つのサンプルを必要とするためです(各分岐点に1つ)。これは、エイリアス周波数がサンプリング周波数の関数になることを意味します。 エイリアス周波数の式は、信号周波数とサンプリング周波数の最も近い整数倍の絶対差です-誰かがこれを私に説明できますか?前もって感謝します!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.