如何利用谐波产品频谱获得基频?
我正在尝试从麦克风输入中获取球场.首先,我通过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];
0 2024-04-14
编程技术问答社区
将音频转换为文本
我只想知道库中是否有任何构建或java或c#中的外部库中有任何构建,使我可以获取音频文件并从中解析并从中提取文本. 我需要提出一个申请才能这样做,但是我不知道从哪里开始. 解决方案 这是您的一些选择: Microsoft Speeck lumenvox 龙自然地说 sphinx4 其他解决方案 这是一个使用C#和System.Speech 的完整示例 代码可以分为两个主要部分: 配置segressRecognitionEngine对象(及其所需元素) 处理语音被认可和语音示威事件. 步骤1:配置SecedRecognitionEngine _speechRecognitionEngine = new SpeechRecognitionEngine(); _speechRecognitionEngine.SetInputToDefaultAudioDevice(); _dictationGrammar = new DictationGr
0 2024-04-13
编程技术问答社区
使用AVPlayer'的MTAudioProcessingTap与远程URL进行AVFoundation音频处理
avaudiomix"> avaudiomix"> avaudiomix"> 和mtaudioprocessingtap,可以将处理应用于Avoundation(在iOS上)中的媒体资产的音轨(PCM访问).此文章 WWDC 2012会议就是我所发现的. 我已经得到了描述的设置 a>用于本地媒体文件,但似乎与远程文件(即HLS流媒体URL)一起工作.唯一可以预期的迹象是在此 Technalication this Note.问答: Avaudiomix仅支持基于文件的资产. 有人对此有更多的了解吗?当资产不是基于文件时,是否真的无法访问音频PCM数据?谁能找到与mtaudioprocessingtap有关的实际苹果文档? 解决方案 我注意到很多人在互联网周围询问这一点,而普遍的共识似乎是不可能的. 事实证明,这是 - 我正在研究一个最近的个人项目,并确定确实可以使mtaudioprocessingtap与远程流一起使用.诀窍是kvobses glayerI
4 2024-03-21
编程技术问答社区
AVAudioPlayer速率
因此,我正在尝试以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]; 再次播放,但只是忽略了我设定的速率.我尝试了
2 2024-03-21
编程技术问答社区
需要了解AudioRecord和AudioTrack是如何进行原始PCM采集和播放的。
我在线程中使用以下代码来捕获麦克风的原始音频样本,并通过扬声器播放. 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
0 2024-03-19
编程技术问答社区
Ogg opus颗粒的位置与时间戳的关系
以最终的目的裁剪/切割/修剪包含单个作品流的OGG文件, 我正在尝试检索和过滤OGG页面形成文件,以及坐在startTimems和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
4 2024-03-19
编程技术问答社区
Python对音频文件的特定部分进行静音处理
我有一个音频文件audio.wav,我有一系列的时间帧看起来像这样: X = [(12.31, 14.), (15.4, 18.9), ...] 这些是我想在我拥有的.wav音频文件中完全保持沉默的时间范围.我该如何实现? 解决方案 基于您的链接,我将其视为 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.e
2 2024-03-19
编程技术问答社区
使用核心音频实现后处理的低通滤波器
我使用基于时间的值实现了基本的低通滤波器.这还可以,但是试图找到正确的时间切片是猜测工作的,并且基于不同的输入音频文件给出了不同的结果.这是我现在拥有的: - (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) * previousFilteredValueOfSampleAmplit
0 2024-03-19
编程技术问答社区
AAC数据包大小
我正在处理带有以下元数据的M4A文件: Metadata: major_brand : M4A minor_version : 0 compatible_brands: M4A mp42isom creation_time : 2019-08-14T13:45:39.000000Z iTunSMPB : 00000000 00000840 00000000 00000000000387C0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Duration: 00:00:05.25, start: 0.047891, bitrate: 69 kb/s Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 6
8 2024-03-19
编程技术问答社区
开源的FSK解码器库?
我正在寻找库或工具来解码WAV文件中的FSK,例如呼叫者ID. 当前使用与debian/ubuntu一起使用的Voicetronix硬件的VPB-Driver捆绑的工具.但这似乎有一个错误,我正在尝试调试 - 验证音频文件的第二个工具将很有用. 我不是寻找从调制解调器或其他硬件设备中读取呼叫者ID数据的任何无数工具 - 我需要纯软件. 解决方案 尝试spandsp http://www.soft-switch.org/ P> 其中有很多好东西,包括FSK.
0 2024-03-19
编程技术问答社区
Java-调整WAV文件的播放速度
我很可能很密,但我似乎找不到解决问题的解决方案 (注意:我可以找到很多人报告这个问题的人,似乎是由于较新的Java而发生的(可能是1.5?).也许Sample_rate不再支持?无法找到任何解决方案). 我正在尝试调整sample_rate,以加快/减速歌曲.我可以成功地播放一个.wav文件而没有问题,因此我研究了用于调整音量的FloatControl: public void adjustVolume(String audioType, float gain) { FloatControl gainControl = null; gainControl = (FloatControl) clipSFX.getControl(FloatControl.Type.MASTER_GAIN); if(gain > MAX_VOLUME) gain = MAX_VOLUME
0 2024-03-19
编程技术问答社区
Java声音可视化器
我正在尝试制作一个Java Sound Visualizer,但是我完全不知道如何实时获取音频从音频中获取字节.我可以将程序与WAV文件同步,但这不是我想做的,我想与程序一起生成声音,然后播放它,而无需保存在任何地方. 感谢您的帮助! 解决方案 本文可以帮助您了解声音文件的结构:构建音频波形显示
4 2024-03-19
编程技术问答社区
我的librosa MFCC的输出是正确的吗?我认为我在使用librosa MFCC时得到了错误的帧数。
result=librosa.feature.mfcc(signal, 16000, n_mfcc=13, n_fft=2048, hop_length=400) result.shape() 信号为1秒长,采样率为16000,我计算了13 MFCC,其长度为400.输出尺寸为(13,41).为什么我得到41帧,不应该是(time*sr/hop_length)=40? 解决方案 tl; dr答案 是的,这是正确的. 长答案 您将时间序列用作输入(signal),这意味着 librosa 首先使用 melspectRogram 函数.它需要一堆参数,您已经指定了一个参数(n_fft). It's important to note that melspectrogram还提供两个参数center和pad_mode,分别为默认值True和"reflect". 来自文档: pad_mode:string: 如果中心= true,则在信号边缘使用的填充模
2 2024-03-19
编程技术问答社区
音乐识别和信号处理
我想构建类似于 有一个带有几首歌曲的大数据库 对于 1中的每首歌曲 有您要识别的音乐的声音/摘录 3中的歌曲.降低质量/比特率(再次为64kbps)并计算声音"哈希" 如果 4. i虽然由于环境噪音而降低质量/比特率和编码差异. 我在正确的轨道上吗?谁能为我提供任何具体文档或示例? Midori似乎甚至认识到hum's,这真是令人印象深刻!他们如何做? 声音哈希存在还是我刚刚构成的东西?如果他们这样做,我该如何计算它们?更重要的是,如何检查child-hash是否在father-hash ? 中 我将如何使用python(也许是内置模块)或php ? 构建类似的系统? 将非常感谢一些例子(最好是在Python或PHP中).预先感谢! 解决方案 我在一个酷炫的框架的外围工作,该框架实现了几种音乐信息检索技术.我几乎不是专家(编辑:实际上我离专家遥远,只是为了澄清),但是我可以说,快速的傅立叶变换可用于这些东西.傅立叶分析很古怪,但其应用非常简单.
2 2024-03-19
编程技术问答社区
声音样本识别库/代码
我不想要声音到文本软件.我需要的是以下内容: 我将记录多个(例如50+)音频流(广播电台的录音) 从这些录音中,我会标记有趣的音频剪辑 - 它们的长度从2到60秒 - 将有数千个这样的音频剪辑 库应该能够从录制的声流中找到同一音频剪辑的其他实例 应将置信因子报告用于使用并提供额外的输入,以便识别下次可以更好地执行 您知道这样的软件库吗? LGPL对我来说最有价值,但我也可以购买商业许可证. 音频剪辑将包含音乐,文本,效果或其任何组合.因此,文本识别是不可能的. 体系结构:C ++,C#for Glue,如果可能的话,CUDA. 解决方案 我尚未找到任何库(尚未),但是两篇有趣的论文可能会为您提供术语和背景来完善您的搜索: 广播流的音频指纹 使用HMM 检索音频段 编辑:搜索"音频指纹"进入了开源和商业的实现页面. http://wiki.musicbrainz.org/audiofingerprint picard 似乎已经建立
0 2024-03-19
编程技术问答社区
确定音频样本键的算法
我有兴趣确定音频示例的音乐键. (或)算法将如何尝试近似音乐音频样本的键? Antares Autotune和Melodyne是两种做这种事情的软件. 任何人都可以对外行的解释有所作为吗?通过分析和弦进度等来推断歌曲的钥匙. 这个话题对我很感兴趣! 编辑 - 从为这个问题做出贡献的每个人都可以找到的精彩资源和大量信息 特别是来自:the_mandrill和DanielBrückner. 解决方案 值得一提的是一个非常棘手的问题,如果您没有信号处理的背景(或者有兴趣学习它),那么您将有一个非常令人沮丧的时光.如果您期望将一些FFT扔到问题上,那么您将不会走得很远.希望您确实有兴趣,因为这是一个非常有趣的领域. 最初存在俯仰识别的问题,对于简单的单声仪器(例如语音),使用自相关或谐波和谐波频谱(例如,请参见Paul R的链接),这很容易做到.但是,您通常会发现这给出了错误的结果:您通常会得到您期望的一半或两倍.这称为PITCH 时期倍增或八度误差,
6 2024-03-19
编程技术问答社区
改变录制的音频的音高和频率
我一直在尝试调整唱片音频的音调,并以: 来调整代码 我的猜测是,应使用MediaRecorder. 进行调整 但是,我不确定要使用哪种方法来更改音调? 浏览一下,我找到了更改在Android 但是我对如何将SoundPool与我关注的音频捕获指南中的元素集成在一起感到困惑.我使用的开发人员指南是否有更直接的解决方案? 解决方案 mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); mSoundPool = new SoundPool(size, AudioManager.STREAM_MUSIC, 0); mSoundPoolMap = new HashMap(); mSoundPoolMap.put(index, mSoundPool.load(context, R.raw.sound, 1)); mSoundPool.
2 2024-03-19
编程技术问答社区
用python在wav文件中添加静音帧
第一次发布在这里,让我们看看如何进行. 我试图在python中编写一个脚本,该脚本将在WAV文件的开头增加一秒钟的沉默,但到目前为止,这样做. 我要做的是在WAV标头中读取,然后使用Wave模块向开始中添加一个\ 0,但效果不佳.这是基于此处的代码音频播放 - with-python.html import wave from audioop import add def input_wave(filename,frames=10000000): #10000000 is an arbitrary large number of frames wave_file = wave.open(filename,'rb') params=wave_file.getparams() audio=wave_file.readframes(frames) wave_file.close() return params, audio #ou
0 2024-03-19
编程技术问答社区
如何使用上下文窗口对整个日志中的Mel-spectrogram进行分段(确保所有音频的分段数量相同)?
我有几个音频,持续时间不同.因此,我不知道如何确保音频的相同数字n.我正在尝试实现现有纸张,因此据说首先使用25毫秒的锤窗和10毫秒的重叠,在整个音频中使用64个MEL滤波器库在整个音频中执行. .然后,为了使我有以下代码行: y, sr = librosa.load(audio_file, sr=None) #sr = 22050 #len(y) = 237142 #duration = 5.377369614512472 n_mels = 64 n_fft = int(np.ceil(0.025*sr)) ## I'm not sure how to complete this parameter win_length = int(np.ceil(0.025*sr)) # 0.025*22050 hop_length = int(np.ceil(0.010*sr)) #0.010 * 22050 window = 'hamming' fmin = 20 fmax = 800
0 2024-03-19
编程技术问答社区
查找音频文件中的声音效果
我有3小时的MP3文件,每〜15分钟都会播放1秒的声音效果,这标志着新章的开始. 是否可以识别每次播放此声音效果时,我可以注意到时间偏移? 每次声音效果都相似,但是由于它是以有损耗的文件格式编码的,因此会有少量的变化. 时间偏移将存储在 id3章节框架帧元数据. 示例source ,声音效果播放两次. ffmpeg -ss 0.9 -i source.mp3 -t 0.95 sample1.mp3 -acodec copy -y 示例1 ( ffmpeg -ss 4.5 -i source.mp3 -t 0.95 sample2.mp3 -acodec copy -y 示例2 ( Spectragram ) 我是音频处理的新手,但是我最初的想法是提取1秒的声音效果的样本,然后在python中使用librosa提取a import numpy import librosa print("Load files") source_series,
0 2024-03-19
编程技术问答社区