标签: amplitude

需要一个音频分析库来创建音频文件的实时反馈吗?

实时不一定是必需的,但是我正在为我的最后一年项目创建一个游戏,我希望利用音频的力量来创建仅基于正在播放的音乐曲目的动态水平.我的目标是使用Playstation mobile和C#为PS Vita创建这个游戏,但如果我想我可以切换到C++和PSP.

我可以使用WAV文件,并希望提取波形的幅度,以及从该数据计算平均频率和近似BPM等其他特征以创建一个级别.

我对尝试使用这些原始数据没有任何疑虑,我只是想知道一种方法,我可以先实际获取该信息.如果我可以提取样本并确定这些样本的不同特征,我可以存储它们并计算出响度,音高等变化以创建音符等.

我正在使用C#,但如果可能的话,我可以使用p/invoke或将我的项目切换到另一个使用C++而不是C#的设备.

我在这里有点恐慌,因为我真的有点难过.

非常感谢你们.

c# c++ audio amplitude frequency-analysis

6
推荐指数
1
解决办法
2701
查看次数

从*.wav文件中提取振幅列表以在Python中使用

我有一点编程和转换麻烦.我正在设计一个AI来识别乐器演奏的音符,并需要从波形文件中提取原始声音数据.我的目标是在文件中的大块时间执行FFT操作以供AI使用.为此,我需要一个音频文件的振幅列表,但我似乎无法找到一个可行的转换技术.这些文件以MP3的形式开始,然后我将它们转换为wav文件,但是当我尝试读取它时,我总是会得到一个压缩文件,它会发出乱码.有谁知道我如何将wav文件转换为与Python波模块兼容的东西,甚至可以直接将数据转换为振幅列表?

python fft frequency wav amplitude

5
推荐指数
1
解决办法
8013
查看次数

Android:振幅值到分贝值?

我正在尝试从 Android 手机上的麦克风记录噪音分贝。我可以获得振幅值并寻找将其转换为分贝的公式。

我使用 MediaRecorder 的以下功能来获取幅度。

mediaRecorder.getMaxAmplitude() ;

另一个问题中,我找到了以下公式。

power_db = 20 * log10(amp / amp_ref);

amp是振幅但不确定是什么amp_ref

有谁知道正确的公式吗?

android microphone amplitude decibel android-sensors

5
推荐指数
1
解决办法
3682
查看次数

获取每秒音频文件的最大幅度

我知道这里有一些类似的问题,但大多数都是关于生成波形图像,这不是我想要的。

我的目标是为音频文件生成波形可视化,类似于 SoundCloud,但不是图像。我希望获得数组中音频剪辑每秒(或半秒)的最大幅度数据。然后我可以使用这些数据创建基于 CSS 的可视化。

理想情况下,我希望获得一个数组,其中包含每秒的所有幅度值作为整个音频文件最大幅度的百分比。这是一个例子:

[
    0.0,  # Relative max amplitude of first second of audio clip (0%)
    0.04,  # Relative max amplitude of second second of audio clip (4%)
    0.15,  # Relative max amplitude of third second of audio clip (15%)
    # Some more
    1.0,  # The highest amplitude of the whole audio clip will be 1.0 (100%)
]
Run Code Online (Sandbox Code Playgroud)

我想我至少必须使用numpyPython 的wave模块,但我不知道如何获取我想要的数据。我想使用 Python,但我并不完全反对使用某种命令行工具。

python audio waveform amplitude soundcloud

5
推荐指数
1
解决办法
9781
查看次数

在Android中录制声音并读取Amplitude

我正在尝试创建一个记录声音一秒钟的应用程序,然后从录制的声音中读取最大振幅.这是我到目前为止,但我的应用程序崩溃,我无法弄清楚为什么.

这是我的第二个活动,在我按下"录制"按钮后,我从第一个活动开始.该应用程序在我的模拟器和手机上崩溃.

package radu.soundSampler;

import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.media.MediaRecorder;

public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Intent intent = getIntent();
    //String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    MediaRecorder rec = new MediaRecorder();
    rec.setAudioSource(MediaRecorder.AudioSource.MIC);
    rec.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
    rec.setOutputFile("/newRecording");
    rec.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

    try {
        rec.prepare();
    } catch (IllegalStateException e) {

    } catch (IOException o) {

    }
    rec.start();
            for(int i=0;i<100000;i++);
    rec.stop();
    int rezultat = rec.getMaxAmplitude();

    TextView textView = new TextView(this);
    textView.setTextSize(40);

    textView.setText(Integer.toString(rezultat));

    setContentView(textView);
}

}
Run Code Online (Sandbox Code Playgroud)

我计算机上的(更新的 …

java audio android record amplitude

5
推荐指数
1
解决办法
4960
查看次数

如何从MP3文件中获取振幅数据?

我试图使用html5和javascript来获得mp3的幅度(和其他组件).任何有用的图书馆?

javascript html5 mp3 signal-processing amplitude

5
推荐指数
1
解决办法
3012
查看次数

Android:如何将getMaxAmplitude转换为db?

我有一段代码可以给我麦克风的音频的getMaxAmplitude()。它有效,但是值肯定很奇怪。我需要将其转换为分贝。我怎么能够?我发现这个公式:double db = 20 * Math.log10(recorder.getMaxAmplitude()/ 2700.0); 但我不知道这是否正确。谢谢。

android amplitude decibel

5
推荐指数
1
解决办法
4090
查看次数

使用 Visualizer 从 MediaPlayer 获取幅度

我一直在阅读另一篇关于从媒体播放器实时计算振幅的文章,但我不清楚如何获得对我有用的值。我需要的是在 0-100 之间标准化的线性幅度值,但正如我在另一篇文章中看到的那样,他们正在执行没有多大意义的 db 计算,因为它们没有标准化为最大 0dB 值(来自如何计算实时音频幅度(android)):

double amplitude = 0;
for (int i = 0; i < audioData.length/2; i++) {
    double y = (audioData[i*2] | audioData[i*2+1] << 8) / 32768.0
    // depending on your endianness:
    // double y = (audioData[i*2]<<8 | audioData[i*2+1]) / 32768.0
    amplitude += Math.abs(y);
}
amplitude = amplitude / audioData.length / 2;
Run Code Online (Sandbox Code Playgroud)

我已经看到,为了计算 de dB,我应该执行以下操作(来自如何从媒体播放器计算幅度的分贝 (dB)?

double sum=0;
for (int i = 0; i < audioData.length/2; i++) {
    double y = (audioData[i*2] …
Run Code Online (Sandbox Code Playgroud)

audio android visualizer amplitude decibel

5
推荐指数
0
解决办法
1404
查看次数

(numpy)FFT'd阵列的幅度(?)错误?

我正在使用numpy和matplotlib来分析我的模拟中的数据输出.有一个(明显的)不一致,我找不到根源.它是以下内容:

我有一个给定能量a ^ 2~1的信号.当我使用rfft进行FFT并计算傅里叶空间中的能量时,它会显着增大.为了无法提供我的数据等细节,这里有一个简单的sin波示例:

from pylab import *
xx=np.linspace(0.,2*pi,128)
a=np.zeros(128)
for i in range(0,128):
    a[i]=sin(xx[i])
aft=rfft(a)
print mean(abs(aft)**2),mean(a**2) 
Run Code Online (Sandbox Code Playgroud)

原则上两个数字应该是相同的(至少在数字意义上),但这是我从这段代码中得到的:

62.523081632 0.49609375
Run Code Online (Sandbox Code Playgroud)

我试图通过numpy.fft文档,但找不到任何东西.这里的搜索给出了以下内容,但我无法理解那里的解释:

现有(合成)信号与滤波信号之间的大FFT幅度差

我错过了什么/误解了什么?在这方面的任何帮助/指针将不胜感激.

谢谢!

python numpy fft amplitude

4
推荐指数
1
解决办法
7986
查看次数

来自AudioRecord的幅度

我有一些代码应该从AudioRecord获取振幅.问题是数学只返回-Infinity.我可以再多看一眼与我一起看看吧:

private class measureSnoreAudio extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... params) {


            Log.d(TAG, "Creating the buffer of size " + BUFFER_SIZE);
            byte[] buffer = new byte[BUFFER_SIZE];

            Log.d(TAG, "Creating the AudioRecord");
            recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                    RECORDING_RATE, CHANNEL, FORMAT, BUFFER_SIZE * 10);

            Log.d(TAG, "AudioRecord recording...");
            recorder.startRecording();

            while (isRecordingSnore) {

                // read the data into the buffer
                int read = recorder.read(buffer, 0, buffer.length);
                int amplitude = (buffer[0] & 0xff) << 8 | buffer[1];

                // Determine amplitude
                double amplitudeDb = 20 …
Run Code Online (Sandbox Code Playgroud)

android amplitude audiorecord

4
推荐指数
1
解决办法
4231
查看次数