問題タブ [signal-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
3843 参照

c++ - より高速なabs-float配列の最大値

オーディオのピークメーターをリアルタイムで描画する必要があります。1秒あたり最小44100サンプル×最小40ストリーム。各バッファは64〜1024サンプルです。各バッファーからabsmaxを取得する必要があります。(これらは、一種のローパスフィルターを介して供給され、約20ms間隔で描画されます。)

それが私が今それをする方法です。もっと早くやりたいです。バッファには-1から1の範囲のフロートがあるため、ファブがあります。

質問、これをより速く行うためのトリッキーなcomp-sciクイックソート風の方法はありますか?

それができない場合、フロート用のブランチレスABSおよびMAX関数は存在しますか?

編集:プライマリプラットフォームはLinux / gccですが、Windowsポートが計画されています(おそらくmingwを使用)。

編集、2番目:
質問の中心であった実際のアルゴ構造に関するビットのために、私は1人ずつ受け入れました。
ループを一度に4に展開し、符号ビットをゼロにしてから、SSE(maxps命令)で最大値を取得して、バナナが剥がれないかどうかを確認します。提案をありがとう、私は次点者としてあなたの何人かに賛成票を投じました。:)

0 投票する
3 に答える
12821 参照

signal-processing - ローパスフィルターをバンドパスフィルターに変換する方法

次の伝達関数で記述されたローパスフィルターがあります。

h [n] =(w_c / Pi)* sinc(n * w_c / Pi)、ここで、w_cはカットオフ周波数です

このローパスフィルターをバンドパスフィルターに変換する必要があります。

0 投票する
4 に答える
2484 参照

math - 人間の聴覚のための FFT データの正規化

オーディオの典型的な FFT はこれとよく似ており、ほとんどのアクションは左端で行われます。

http://www.flight404.com/blog/images/fft.jpg

彼はそれを部分的な正弦波で乗算して底に到達させましたが、記事はその部分についてあまり具体的ではありません. また、何らかのプロパティに基づくものではなく、データセットの「十分な」修正のようにも見えます。人間の聴覚はより高い周波数に適していることを理解しています。したがって、ほとんどの音楽は低音が増幅され、高音は減衰されているため、どちらも比較的同じ強さで聞こえます。

私の質問は、この標準的な低下を補うために FFT にどのような変更を加える必要があるかということです。

編集 ::

http://en.wikipedia.org/wiki/Equal-loudness_contour

私はこの記事に出くわしました。それが向かうべき方向かもしれないと思いますが、それでも対策が必要な FFT の特性があるかもしれません。

0 投票する
1 に答える
165 参照

blackberry - BlackBerry の技術仕様

BlackBerry の技術仕様を見つけるのに苦労しています。また、BlackBerry の Web サイトもごちゃごちゃしています。また、簡単に連絡できる番号もありません。

これは厳密にはコーディングの問題ではありませんが、BlackBerry オーディオ API はどのようなもので、オーディオの技術仕様はどこで入手できますか? 具体的には、Audio-In、具体的には 3.5 mm ジャックの Mic-In について、より多くの情報を見つけようとしています。

残念ながら、先に進む前に、サンプリング レートやデータ幅などを知る必要があります。

適切なリソースへの指示、または頭のてっぺんからわかっている場合は高く評価されます。

0 投票する
4 に答える
569 参照

algorithm - 基数 10 の数値表示のアルゴリズム - 更新ごとの最小変更

簡単な要約:

表示が更新されるたびに最小桁数 (10 進数) が変更されるように、4 桁の速度信号を表示するアルゴリズムを探しています。

例えば:


詳細:

4 桁の LCD ディスプレイに速度信号 (0 ~ 3000 RPM) を表示する必要があるプロジェクトに取り組んでいます。理想的なディスプレイ ソリューションはアナログ ゲージですが、私はデジタル ディスプレイにこだわっています。表示は機械のオペレーターが読み取りますが、できるだけ読みやすくしたいと考えています。

オペレーターは、シグナルの正確な値をあまり気にしません。彼は値が何であるか (最も近い 10 RPM まで) を知りたがり、マシンの動作の変化に応じて値が上下するのを見たいと思うでしょう。彼はそれがいたるところに飛び跳ねるのを見たくないでしょう。

これが私がこれまでに行ったことです:

  • 数値を最も近い 10 RPM に丸めて、最後の桁が常に 0 になるようにします
  • 電気ノイズと通常のセンサーの変動によって読み取り値が一度に 10 RPM を超えてジャンプしないように、信号をフィルター処理します。
  • 同じ値 (例: 990 - 1000) を超える場合を回避するために、信号に +/-10 RPM ヒステリシスを追加しました。

これにより、信号が安定している場合 (約 75% の時間) はきれいに処理されますが、信号が定常状態から別の定常状態に移行するときに、信号に多くの不要な変動が見られます。信号が 100 RPM から 1000 RPM に変化すると (たとえば)、信号は途中で多くの数値を通過します。数値を実際に読んで理解するには少し時間がかかるため、これらすべての中間状態に到達してもほとんど意味がないように思われます。単純にディスプレイの更新レートを下げてみましたが、満足のいく結果にはなりませんでした。同時に、ディスプレイの動きが鈍く、びくびくしたように感じました。数字が変化する前に顕著な遅延があり、その後大きな飛躍 (100、340、620、980、1000) で移動します。


提案:

例に示すようにディスプレイを動作させたい:

  1. 表示は 1 秒に 2 回更新されます
  2. ある定常状態から別の定常状態への移行に 2 秒以上かかることはありません。
  3. 入力信号が現在表示されている値よりも高い場合、表示される信号は増加しますが、入力信号値よりも高くなることはありません。
  4. 入力信号が現在表示されている値より低い場合、表示される信号は減少しますが、入力信号値より低くなることはありません。
  5. 更新ごとに最小桁数を変更する必要があります (できれば 1 桁のみ)
  6. できるだけ早く表示信号と入力信号の差を縮めるために、上位桁から変更する必要があります。

上記のルールに従って「適切な」4桁の10進数を出力するアルゴリズムを思い付くことができますか、または知っていますか?

関数プロトタイプは、疑似コードで次のようになります。

テキストの壁で申し訳ありません。質問に答える人が、私がすでに経験したことをカバーしないように、これまでの進捗状況を記録したかったのです。

0 投票する
5 に答える
300 参照

language-agnostic - ステレオ信号を使用して、周波数ドメインでより高い解像度を得ることができますか?

バックグラウンド

確かに、この質問は、デジタル信号処理に関連する基礎となる数学を深く理解していないことに起因しています。まだ勉強してる。

一連の振幅サンプル、たとえば 1024 (単一チャネル) を取得し、それらを周波数領域に取り込みたいと考えています。明らかに、これには FFT が必要です。問題ありません。問題は、ナイキスト周波数または 1024/2 までの周波数しか得られないことです。

質問

ステレオ信号がある場合、信号をマージして 2048 の振幅サンプルを生成し、1024 の周波数値を返すことはできますか? 周波数領域でより高い解像度を得ようとしています。

では、これを実行して意味のある頻度データを返すことはできますか? ステレオ信号を取得し、周波数ドメインでより高い解像度で終わる他の方法はありますか?

これまでに見つけたもの

左の信号を取得してそれを実数値にし、右の信号をFFTの複素数値の虚数値にすることを提案する記事に出くわしました。数学が分からないせいか、意味がわかりません。試してみましたが、動作しているように見えましたが、信号漏れがありました。そこで、ハニング ウィンドウを適用しましたが、処理後に使用できる値は 512 個しかありませんでした。

0 投票する
5 に答える
3609 参照

speech-recognition - 「ボイストリガー」検出

「トリガーワード」を使用してオーディオの録音を開始する機能があれば、大幅に改善される音声アプリケーションがあります。完全な音声テキスト エンジンは必要ありません。トリガー ワードを確実かつ効率的に検出する機能だけが必要です。

この特定のユースケースをサポートする特殊な音声エンジン、またはそのような単一目的の検出エンジンを開発するためのライブラリ/方法があるかどうか疑問に思っています。理想的には、騒がしい環境で動作することを望みますが、1 人のユーザーの声に対してトレーニングすることもできます。

研究論文/トピックへのポインタも高く評価されるので、私は何を求めるべきかを知っています.

0 投票する
7 に答える
7444 参照

c - 配列のインプレース ビット反転シャッフル

FFT 関数の場合、配列内の要素をビット反転した方法で並べ替えまたはシャッフルする必要があります。サイズが 2 のべき乗のほとんどの FFT 関数は、ビット反転された方法でデータを期待または返すため、これは FFT の一般的なタスクです。

たとえば、配列に 256 個の要素があると仮定すると、各要素をビット反転パターンと交換したいとします。以下に 2 つの例 (バイナリ) を示します。

等々。

これを迅速かつより重要な方法で実行する方法はありますか?

私はすでにこのスワップを行う関数を持っています。1つ書くのは難しくありません。これは DSP で非常に一般的な操作であるため、非常に素朴なループよりも賢い方法があると感じています。

問題の言語は C ですが、どの言語でもかまいません。

0 投票する
4 に答える
330 参照

windows - Windows プラットフォームでギター アンプまたは FX エミュレーションを実装するにはどうすればよいですか?

どの技術を手に入れるべきですか?ドライバーか何かを書くべきですか?どうもありがとうございました

0 投票する
4 に答える
7079 参照

java - .WAV オーディオ データ サンプルを double 型に変換するには?

オーディオ データを処理するアプリケーションに取り組んでいます。私は Java を使用しています (MP3SPI、Jlayer、および Tritonus を追加しました)。オーディオ データを .wav ファイルからバイト配列に抽出しています。私が扱っているオーディオ データ サンプルは 16 ビット ステレオです。

私が読んだことによると、1つのサンプルの形式は次のとおりです。

あああああああああああああああああああああああああああああああああああああああ

ここで、AABB は左チャネルと CCDD 右チャネルを表します (チャネルごとに 2 バイト)。このサンプルを double 値型に変換する必要があります。データ形式について読んだことがあります。Java はビッグ エンディアンを使用し、.wav ファイルはリトル エンディアンを使用します。私は少し混乱しています。変換プロセスを手伝ってもらえますか? ありがとうございます