我想构建类似于 有一个带有几首歌曲的大数据库 对于 1中的每首歌曲 有您要识别的音乐的声音/摘录 3中的歌曲.降低质量/比特率(再次为64kbps)并计算声音"哈希" 如果 4. i虽然由于环境噪音而降低质量/比特率和编码差异. 我在正确的轨道上吗?谁能为我提供任何具体文档或示例? Midori似乎甚至认识到hum's,这真是令人印象深刻!他们如何做? 声音哈希存在还是我刚刚构成的东西?如果他们这样做,我该如何计算它们?更重要的是,如何检查child-hash是否在father-hash ? 中 我将如何使用python(也许是内置模块)或php ? 构建类似的系统? 将非常感谢一些例子(最好是在Python或PHP中).预先感谢! 解决方案 我在一个酷炫的框架的外围工作,该框架实现了几种音乐信息检索技术.我几乎不是专家(编辑:实际上我离专家遥远,只是为了澄清),但是我可以说,快速的傅立叶变换可用于这些东西.傅立叶分析很古怪,但其应用非常简单.
以下是关于 audio-processing 的编程技术问答
我尝试了以下命令来从视频中提取音频: ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3 但是我得到以下输出 libavutil 50.15. 1 / 50.15. 1 libavcodec 52.72. 2 / 52.72. 2 libavformat 52.64. 2 / 52.64. 2 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1.19. 0 / 1.19. 0 libswscale 0.11. 0 / 0.11. 0 libpostproc 51. 2. 0 / 51. 2. 0 SamplE.avi: Invalid data found when processing input 有人可以帮忙吗? 解决方案 提取音频流而无需重新编码: ffmpeg -i input-v
import os import scipy.io import scipy.io.wavfile import numpy as np import matplotlib.pyplot as plt dataset_path = os.path.join(os.environ['HOME'], 'shared', 'data', 'assignment_1') wavedata = os.path.join(dataset_path, 'example.wav') fs, audio_buffer = scipy.io.wavfile.read(wavedata) 我有点不明白如何进一步使用matplotlib.pyplot 感谢任何建议或正确的文件! 解决方案 这将在其本地时间域中绘制WAV音频文件作为时间序列 import os import scipy.io import scipy.io.wavfile import numpy as np impo
首先,我在Stack Exchange中问了这个问题,我只得到与概念有关的答案,而不是以实现为导向的答案.因此,我的问题是我正在尝试创建高通滤波器,并使用Python实施. from numpy import cos, sin, pi, absolute, arange from scipy.signal import kaiserord, lfilter, firwin, freqz, firwin2 from pylab import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show # Nyquist rate. nyq_rate = 48000 / 2 # Width of the roll-off region. width = 500 / nyq_rate # Attenuation in the stop band. ripple_db = 12.0 num_of_taps,
我已经在项目中添加了fftpitchdetector.cs,但我不确定如何使用. 我的代码: private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (waveWriter == null) return; byte[] buffer = e.Buffer; float sample32 = 0; int bytesRecorded = e.BytesRecorded; float[] floats = new float[buffer.Length]; waveWriter.Write(buffer, 0, bytesRecorded); for (int
我使用基于时间的值实现了基本的低通滤波器.这是可以的,但是试图找到正确的时间切片是猜测工作的,并且基于不同的输入音频文件给出了不同的结果.这是我现在拥有的: - (void)processDataWithInBuffer:(const int16_t *)buffer outBuffer:(int16_t *)outBuffer sampleCount:(int)len { BOOL positive; for(int i = 0; i = 0); currentFilteredValueOfSampleAmplitude = LOWPASSFILTERTIMESLICE * (float)abs(buffer[i]) + (1.0 - LOWPASSFILTERTIMESLICE) * previousFilteredValueOfSampleAmpli
我想一一读一个文件夹.我以这种方式写了,但是它给出了"无效的波浪文件.原因:无法打开文件".错误.但是当我将t更改为数字时,它可以工作. for t=1:10 myFile=['path\','t.wav']; [ speech, fs] = wavread( myFile); end 解决方案 您需要将变量t转换为字符串.您要求打开文件'path\t.wav',大概不存在.由于变量t是整数,因此您可以使用myFile = ['path\' int2str(t) '.wav']; 只有字符串才能与其他字符串连接.当然,如果您的文件少于10个文件,那么您将遇到另一个问题... 其他解决方案 您可以使用特殊打印f命令:sprintf();分配此字符串. myFile = sprintf('path\%d.wav',t); sprintf在MATLAB中工作,就像在C环境中一样.
我正在做歌曲类型分类.对于每首歌,我都将它们切成小框架(5s),以生成频谱图作为神经网络的输入特征,并且每个帧具有相关的歌曲类型标签. 数据看起来如下: name label feature .... song_i_frame1 label feature_vector_frame1 song_i_frame2 label feature_vector_frame2 ... song_i_framek label feature_vector_framek ... 我可以从KERAS中获得预测准确性,没有任何问题.但是目前,我没有如何以多数投票从帧级别到歌曲级别汇总预测,因为数据馈送到何时Keras模型,他们的名字丢失了. 如何保留每个标签的名称(例如,song_i_frame1)在keras输出中以通过多数投票来形成对歌曲的总预测.或者,还有其他方法可以汇总到歌曲级预测吗? 我四处搜索
我需要一个软件或一个可以进行音频比较的软件或库,但不使用标签的内部mp3,它应该比较2个音频文件之间的相似性或信心,或者如果我从音频文件中删除了一块,则该软件应指向从主音频文件中的该文件令牌在哪里(我希望我足够清楚). 因此,我如何听到这项技术被称为音频比较,并基于某些音频示例文件,我们可以将其称为指纹.如果软件找到相当于文件中的输入样品或指纹的等效的软件. 最佳. 解决方案 libfooid 是免费的.它是双重许可为GPL和BSD,例如许可证. 其他解决方案 在 http://www.ee.columbia.edu/~dpwe/papers/wang03-shazam.pdf
我只想知道库中是否有任何构建或java或c#中的外部库,可以使我获取音频文件并从中解析并从中提取文本. 我需要做一个申请才能这样做,但是我不知道从哪里开始. 解决方案 这是您的一些选择: microsoft Speeck lumenvox 龙自然地说 sphinx4 其他解决方案 这是一个使用C#和System.Speech 的完整示例 代码可以分为2个主要部分: 配置SecemRecognitionEngine对象(及其所需元素) 处理语音被认可和语音示威事件. 步骤1:配置SependRecognitionEngine _speechRecognitionEngine = new SpeechRecognitionEngine(); _speechRecognitionEngine.SetInputToDefaultAudioDevice(); _dictationGrammar = new DictationGrammar
我正在尝试从麦克风输入中获取球场.首先,我通过FFT分解了从时域到频域的信号.在执行FFT之前,我已将锤窗窗口应用于信号.然后,我得到了FFT的复杂结果.然后,我将结果传递给了谐波产品频谱,在那里结果被缩减采样,然后乘以倒数采样的峰,并给出一个复杂数字的值.那我该怎么做才能获得基本频率? public float[] HarmonicProductSpectrum(Complex[] data) { Complex[] hps2 = Downsample(data, 2); Complex[] hps3 = Downsample(data, 3); Complex[] hps4 = Downsample(data, 4); Complex[] hps5 = Downsample(data, 5); float[] array = new float[hps5.Length];
我正在努力处理WAV文件的幅度,并以某个小数因素进行缩放.我正在尝试以记忆效率的方式围绕如何阅读和重写文件,同时也试图解决该语言的细微差别(我是C).该文件可以是8-1位格式的.我想这样做的方式是首先阅读标题数据构造,然后在循环中处理实际数据,其中我将在缓冲区中读取大量数据,请执行任何需要,然后将其写入输出. #include #include typedef struct header { char chunk_id[4]; int chunk_size; char format[4]; char subchunk1_id[4]; int subchunk1_size; short int audio_format; short int num_channels; int sample_rate; int byte_rate; short int blo
和mtaudioprocessingtap,可以将处理应用于Avoundation(在iOS上)中的媒体资产的音轨(PCM访问).此文章 WWDC 2012会议就是我所发现的. 我已经得到了描述的设置 a>用于本地媒体文件,但似乎与远程文件(即HLS流媒体URL)一起工作.唯一可以预期的迹象是在此 Avaudiomix仅支持基于文件的资产. 有人对此有更多的了解吗?当资产不是基于文件时,是否真的无法访问音频PCM数据?谁能找到与mtaudioprocessingtap有关的实际苹果文档? 解决方案 我注意到很多人在互联网周围询问这一点,而普遍的共识似乎是不可能的. 事实证明,这是 - 我正在研究这个最近的个人项目,并确定确实可以使mtaudioprocessingtap与远程流一起使用.诀窍是kvobses glayerItem的地位;准备好玩时,您可以安全地检索基础的Avassettrack并在其上设置AudioMix. 我在此处使用一些(主要是工作的
因此,我试图以iOS 5.1.1的不同速率播放声音文件,但绝对没有运气.到目前为止,我已经尝试设置Avaudioplayer的速率: player = [[AVAudioPlayer alloc] initWithContentsOfURL:referenceURL error:&error]; player.enableRate = YES; player.rate = 1.5; player.numberOfLoops = 0; player.delegate = self; [player prepareToPlay]; [player play]; 根本没有运气,声音播放,但只是忽略了我给它的速度.我还尝试了Avplayer: avPlayer = [[AVPlayer alloc] initWithURL:referenceURL]; avPlayer.rate = 0.5; [avPlayer play]; 再次播放,但只是忽略了我设定的速率.我尝试了许多
终极旨在裁剪/剪切/修剪包含单个Opus流的OGG文件, 我正在尝试检索和过滤ogg页面的文件,并且坐在startimems和endtimems的裁剪窗口之间的页面,我将把它们追加到2个ogg头,导致修剪的opus,没有转码 我已达到一个我可以访问OGG页面的舞台,但我很困惑如何确定页面是否在裁剪窗口中或不是 OggOpusStream oggOpusStream = OggOpusStream.from("audio/technology.opus"); // Get ID Header IdHeader idHeader = oggOpusStream.getIdHeader(); // Get Comment Header CommentHeader commentHeader = oggOpusStream.getCommentHeader(); while (true) { AudioDataPacket audioDataPacket = oggOp
我有一个音频文件audio.wav,我有一组时间帧,看起来像这个: X = [(12.31, 14.), (15.4, 18.9), ...] 这些是我想要完全沉默的时间框架.我该如何实现这一目标? 解决方案 基于您的链接,我将其视为 from pydub import AudioSegment a = AudioSegment.from_wav("audio.wav") # X = [(12.31, 14.), (15.4, 18.9), ...] duration = (14.0 - 12.31) * 1000 s1 = AudioSegment.silent(duration) duration = (18.9 - 15.4) * 1000 s2 = AudioSegment.silent(duration) b = a[:12310] + s1 + a[14000:15400] + s2 + a[18900:] b.export('new_a
我在线程中使用以下代码从麦克风捕获原始音频样本,并通过扬声器播放它. public void run(){ short[] lin = new short[SIZE_OF_RECORD_ARRAY]; int num = 0; // am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); // -> MOVED THESE TO init() // am.setMode(AudioManager.MODE_IN_COMMUNICATION); record.startRecording(); track.play(); while (passThroughMode) { // while (!isInterrupted
有一个先前记录的声音文件,其中包含用户的语音.我需要做的是应用一些声音过滤器来更改声音,之后才能保存和播放修改版本. audiokit 可以使用[[AKFileInput alloc] initWithFilename:file1];打开文件,并保存[[AKManager sharedManager] renderToFile:outputFile forDuration:duration]; 有什么想法如何在这两个命令之间应用一些效果? 解决方案 除了使用AkfileInput打开文件外,您还必须播放它,并这样做,您将创建一个AkinStrument.在该AkinStrument中,您可以使用Audiokit的任何信号修饰符操作处理输出.