我有兴趣确定音频样本的音乐键.算法如何(或可能)试图逼近音乐音频样本的关键字?
Antares Autotune和Melodyne是两款完成此类工作的软件.
任何人都可以给出一些关于这将如何工作的外行的解释?通过分析和弦进行的频谱等,以数学方式推断出歌曲的关键.
这个话题让我很感兴趣!
编辑 - 从为这个问题做出贡献的每个人中找到了精彩的资源和丰富的信息.
尤其来自:the_mandrill和DanielBrückner.
我想以编程方式比较2个音频文件.例如:我的iPhone应用程序中有一个声音文件,然后我录制了另一个.我想检查现有声音是否与录制的声音匹配( - 类似于语音识别).
我怎么能做到这一点?
我试图在Android应用程序中使用Little Endian的ndk-build本机代码进行音频处理(我还没有JNI).
当我在jni dir中执行ndk-build时,我得到了($ USER_PATH是我计算机上目录的路径):
Android NDK: WARNING: Rebuilding libc++ libraries from sources!
Android NDK: You might want to use $NDK/build/tools/build-cxx-stl.sh --stl=libc++
Android NDK: in order to build prebuilt versions to speed up your builds!
Android NDK: ERROR:$USER_PATH/android-ndk-r10/sources/android/compiler-rt/Android.mk:compiler_rt_shared: LOCAL_SRC_FILES points to a missing file
Android NDK: $USER_PATH/Android/android-ndk-r10/sources/android/compiler-rt/libs/armeabi/libcompiler_rt_shared.so exists or that its path is correct
$USER_PATH/android-ndk-r10/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting . Stop.
Run Code Online (Sandbox Code Playgroud)
我看到这是因为PREBUILT_STATIC_LIBRARY指向丢失的文件.
我怎么解决这个问题?
目录结构:

有.mk文件:
MY_LOCAL_PATH := $(call my-dir)
ifndef LE_SDK_PATH
LE_SDK_PATH := $(call my-dir)
endif …Run Code Online (Sandbox Code Playgroud) 根据Microsoft的说法,从Windows 10开始,使用共享模式WASAPI的应用程序可以请求小于10毫秒的缓冲区大小(请参阅https://msdn.microsoft.com/en-us/library/windows/hardware/mt298187%28v=vs. 85%29.aspx).
根据这篇文章,实现如此低的延迟需要一些驱动程序更新,我做了.使用独占模式渲染和捕获流,我测量了大约13ms的总往返延迟(使用硬件环回电缆).这告诉我,至少有一个端点成功实现了<10ms的延迟.(这个假设是正确的吗?)
文章提到应用程序可以使用新IAudioClient3界面查询Windows音频引擎使用的最小缓冲区大小IAudioClient3::GetSharedModeEnginePeriod().但是,此功能总是在我的系统上返回10ms,并且任何尝试使用任一IAudioClient::Initialize()或IAudioClient3::InitializeSharedAudioStream()低于10ms的周期初始化音频流总是会导致AUDCLNT_E_INVALID_DEVICE_PERIOD.
为了确保,我还禁用了音频驱动程序中的任何效果处理.我错过了什么?甚至可以从共享模式获得低延迟?请参阅下面的示例代码.
#include <windows.h>
#include <atlbase.h>
#include <mmdeviceapi.h>
#include <audioclient.h>
#include <iostream>
#define VERIFY(hr) do { \
auto temp = (hr); \
if(FAILED(temp)) { \
std::cout << "Error: " << #hr << ": " << temp << "\n"; \
goto error; \
} \
} while(0)
int main(int argc, char** argv) {
HRESULT hr;
CComPtr<IMMDevice> device;
AudioClientProperties props;
CComPtr<IAudioClient> client;
CComPtr<IAudioClient2> client2;
CComPtr<IAudioClient3> client3; …Run Code Online (Sandbox Code Playgroud) 这个问题通常被问到是另一个问题的一部分,但事实证明答案很长.我决定在这里回答它,所以我可以在其他地方链接到它.
虽然我不知道Java此时可以为我们生成音频样本的方式,但如果将来发生变化,这可能是一个适合它的地方.我知道JavaFX有一些这样的东西,例如AudioSpectrumListener,但仍然不能直接访问样本.
我正在javax.sound.sampled用于播放和/或录制,但我想对音频做些什么.
也许我想直观地展示它或以某种方式处理它.
如何使用Java Sound访问音频样本数据?
也可以看看:
我想根据音频流开发一个用于检测风的应用程序.
我需要一些专家的想法,只是为了给我指导或一些链接,我知道这不是一件容易的事,但我打算在这里付出很多努力.
我的计划是检测流中的一些常见模式,如果值接近风噪声的这种常见模式,我将通知找到匹配,如果值更接近已知模式,我可以肯定检测到风,如果值与模式不匹配那么我猜没有那么多的风....
这是我的计划,但我需要了解这些事情是如何完成的.是否有一些开放项目已经这样做了?或者是否有人正在研究这个主题?
我在这个论坛上写的原因是因为我不知道如何谷歌它,我找到的东西不是我想要的.我真的不知道如何开始开发这种算法.
编辑1:
我试着录制一个风,当我为我打开保存的音频文件时,它只是一堆数字:).我甚至不知道我应该以什么格式保存这个,波浪足够好吗?我应该使用别的东西,或者如果我用mp3转换风噪音频文件怎么办?这会有助于解析吗?
好吧,我有很多问题,那是因为我不知道从哪里阅读更多关于这类话题的内容.我用guidlines标记我的问题,所以我希望有人会帮助我.
必须有可检测的东西,因为风噪声是如此常见,必须以某种方式检测到这一点,我们只需要有人给我提示,熟悉这个主题的人.
language-agnostic algorithm signal-processing audio-processing
我想在Mac上录制和播放音频.现在,我对输入/输出/ ChannelFormat的设置有一些问题......我向您展示了我在下面尝试的一些代码.
// Setup audio device
- (OSStatus) setupAudioDevice { // It's oks
AudioComponentDescription desc;
AudioComponent comp;
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO; // This type support for both iOS and Mac
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
comp = AudioComponentFindNext(NULL, &desc);
if (comp == NULL)
{
return -1;
}
OSStatus err = AudioComponentInstanceNew(comp, &audioUnit);
checkStatus(err);
return err;
}
//Enable IO
//https://developer.apple.com/library/prerelease/content/technotes/tn2091/_index.html
- (OSStatus) setupEnableIO { // It's ok
UInt32 enableIO;
//When using AudioUnitSetProperty the 4th parameter …Run Code Online (Sandbox Code Playgroud) 我想在两段音频之间得到某种距离测量.例如,我想比较动物的声音和模仿该动物的人的声音,然后返回声音有多相似的分数.
这似乎是一个难题.接近它的最佳方法是什么?我想从音频信号中提取一些特征,然后对这些特征进行欧几里德距离或余弦相似性(或类似的东西).什么样的功能很容易提取,有助于确定声音之间的感知差异?
(我看到Ahazam如何使用散列的东西,但这似乎是一个不同的问题,因为两个音频完全相同,增加了噪音.而在这种情况下,两个音频不一样,他们只是在感知上相似)