'GLIBCXX_3.4.30'在conda虚拟环境中找不到librosa(在尝试了很多解决方案后)?
我正在尝试import librosa,但是我被这个错误扔了: /home/lakshya/anaconda3/envs/tff_env/lib/python3.9/site-packages/zmq/backend/cython/../../../../.././libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/lakshya/anaconda3/envs/tff_env/lib/python3.9/site-packages/scipy/fft/_pocketfft/pypocketfft.cpython-39-x86_64-linux-gnu.so) 我尝试根据我浏览的其他类似问题来解决以下问题: sudo apt-get install libstdc++6 它的输出: libstdc ++ 6已经是最新版本(10.2.1-6). sudo apt-get dis
2 2024-01-26
编程技术问答社区
将PCM波形数据转换为numpy数组,反之亦然
情况 我使用 webrtc-vad Python适配器. 示例实现 " https://docs.python.org/3.7/library/wave.html" rel =" noreferrer"> wave模块从文件中读取PCM数据.请注意,根据评论,该模块仅适用于单声道和8000、16000或32000 Hz的采样率. 我想做的 从任意音频文件(MP3和WAV文件)中读取不同采样率的音频数据,将其转换为WEBRTC-VAD使用的PCM代理,应用WEBRTC-VAD来检测语音活动,并最终通过产生结果来处理结果在PCM数据中再次出现numpy-arrays,因为使用 我的问题 使用wave模块时,WEBRTC-VAD模块仅能正常工作.该模块以bytes对象返回PCM数据.在喂食已获得的numpy阵列时,它不起作用.通过使用librosa.load(...).我尚未找到在两个表示之间转换的方法. 我到目前为止所做的 我已经写了以下功能来读取音频文件
16 2023-12-01
编程技术问答社区
音频信号在字级边界的分割
我正在使用webrtcvad和pydub使用音频文件.任何碎片的分裂都是通过寂静的句子. 有什么办法可以在单词级边界条件下进行拆分? (每个口语之后)? 如果libsa/ffmpeg/pydub具有这样的功能,那么每个人声都可以分开吗?但是分开后,我需要声音的开始和结束时间,正是该声乐部分在原始文件中所定位的. 一个简单的解决方案或通过FFMPEG分裂的方法是由以下方式定义的: ,但这也通过静音分裂,每个填充号或框架大小,分裂是不同的.我正在尝试通过声乐分开. 例如,我手动完成了原始文件,拆分单词及其在JSON中的时间位置在链接下提供的文件夹中: 解决方案 在将音频预处理成合适的功能之后,可以使用隐藏的Markov模型来处理简单的音频分割问题.语音的典型特征将是声音,声乐活动/声音.为了获得单词级分段(而不是句子),这需要具有相当高的时间分辨率.不幸的是,Pywebrtcvad没有可调节的时间平滑,因此可能不适合该任务. 在您的音频示例中,有一个广播主机在德语中很快说
24 2023-12-01
编程技术问答社区
librosa不能打开由librosa创建的.wav?
我试图使用libreosa通过从60s的某些.wav文件中切割1个零件来生成一些数据. 此部分有效,我创建所有文件,也可以通过任何播放器收听它们,但是如果我尝试使用libreosa进行打开.加载我会收到此错误: >>> librosa.load('.\\train\\audio\\silence\\0doing_the_dishes.wav', sr=None) Traceback (most recent call last): File "", line 1, in File "C:\Users\gionata\AppData\Local\Programs\Python\Python36\lib\site\packages\librosa\core\audio.py", line 107, in load with audioread.audio_open(os.path.realpath(path)) as input_file: F
2 2023-11-27
编程技术问答社区
ModulenotFoundError:没有名为" libreosa"的模块
目前,我正在研究我想使用libreosa库的语音识别. 我在ubuntu上使用命令安装libreosa: conda install -c conda-forge librosa 但是当我运行代码时,我会收到以下错误: import librosa ModuleNotFoundError Traceback (most recent call last) in ----> 1 import librosa ModuleNotFoundError: No module named 'librosa' 谁能告诉我如何使用libresa? 解决方案 如果您在康达(Conda)中使用了python 3.5环境,则可能会遇到numba依赖性的麻烦.可以通过在安装libsa之前从numba conda通道安装: 来避免这种情况
8 2023-11-25
编程技术问答社区
MFCC Python:librosa与python_speech_features与tensorflow.signal的结果完全不同
我正在尝试从Audio(.wav File)中提取MFCC功能,并且我尝试了python_speech_features和librosa,但是它们给出了完全不同的结果: audio, sr = librosa.load(file, sr=None) # librosa hop_length = int(sr/100) n_fft = int(sr/40) features_librosa = librosa.feature.mfcc(audio, sr, n_mfcc=13, hop_length=hop_length, n_fft=n_fft) # psf features_psf = mfcc(audio, sr, numcep=13, winlen=0.025, winstep=0.01) 以下是图: librosa : python_speech_features : 我是否将这两种方法错误地传递给了任何参数?为什么这里有如此巨大的区别? 更
32 2023-10-16
编程技术问答社区
如何将梅尔频谱图转换为对数尺度的梅尔频谱图
我正在阅读本文关于使用卷积神经网络的环境噪音歧视他们的结果.他们将WAV文件转换为对数尺度的MEL频谱图.你怎么做到这一点?我能够将WAV文件转换为MEL频谱图 y, sr = librosa.load('audio/100263-2-0-117.wav',duration=3) ps = librosa.feature.melspectrogram(y=y, sr=sr) librosa.display.specshow(ps, y_axis='mel', x_axis='time') 我还可以作为日志缩放频谱图 : librosa.display.specshow(ps, y_axis='log', x_axis='time') 显然,它们看起来不同,但是实际的频谱图ps是相同的.使用libreosa,如何将此胶合图转换为日志缩放的melspectrogram?,此外,对原始频谱图的使用是什么?它只是为了减少频域的差异,以使其与时轴或其他内容相媲美吗? 解决
2 2023-09-08
编程技术问答社区
使用Librosa生成的频谱图看起来与Kaldi并不一致?
i使用Kaldi的" EGS/TIDIGITS"代码生成了"七"话语的频谱图,使用23个垃圾箱,20kHz采样率,25ms窗口和10ms偏移.频谱图显示如下图通过MATLAB Imagesc函数可视化: 我正在尝试使用libreosa作为Kaldi的替代方案.我使用相同数量的垃圾箱,采样率以及上面的窗口长度/偏移来设置代码. time_series, sample_rate = librosa.core.load("7a.wav",sr=20000) spectrogram = librosa.feature.melspectrogram(time_series, sr=20000, n_mels=23, n_fft=500, hop_length=200) log_S = librosa.core.logamplitude(spectrogram) np.savetxt("7a.txt", log_S.T) 但是,当我可视化同一wav文件的生成的librosa频谱图时,
10 2023-09-08
编程技术问答社区
'音频数据必须是音频数据'python 中的谷歌语音识别错误
我正在尝试将音频文件加载到Python中,并使用Google语音识别进行处理 问题是,与C ++不同,Python不会显示数据类型,类或让您通过创建新对象并重新包装数据 在一个数据类型和另一种数据类型之间进行转换 . 我不明白如何在Python中从一个数据类型转换为另一种数据类型 所讨论的代码在下面, import speech_recognition as spr import librosa audio, sr = librosa.load('sample_data/metal.mp3') # create a speech recognition object r = spr.Recognizer() r.recognize_google(audio) 错误是: audio_data must be audio data 如何转换要在Google语音识别中使用的音频对象 解决方案 @mich,希望您现在已经找到了一个解决方
16 2023-09-08
编程技术问答社区
Librosa MFCC功能中使用的MEL过滤器数量是多少?
librosa.feature.mfcc(y = none,sr = 22050,s = none,n_mfcc = 20,dct_type = 2,norm ='ortho',lutter = 0,** kwargs) libreosa mfcc函数不包含用于使用MEL过滤器数量的参数.有没有一种方法来定义它或使用librosa.filters.mel中使用的'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 解决方案 MFCC函数将把其他关键字参数传递给librosa.feature.melspectrogram,如kwargs>. 所指定的. 夸尔格斯:其他关键字参数 对melspectrogram的论点,如果在时间序列输入上运行 如果您转到 夸尔格斯:其他关键字参数 MEL过滤器库参数. 有关详细信息,请参见librosa.filters.mel. s
12 2023-09-08
编程技术问答社区
哪里可以找到编写一个像样的节拍器应用的资源?
最近,我一直在尝试弄清楚如何编写节拍器应用程序,但是我遇到了许多困难(例如,调用功能,例如),或明显不准确的发作检测算法(我已经使用过Librosa)和这似乎是一个非常复杂的话题.然而,由于某种原因,我对专业节拍器应用程序源代码/教程/书籍的研究没有成功. (例如Frozenapes iOS Tempo应用程序)标准.例如当调用某个速度时,使用预录制的.WAV样品的节拍器(因此,在应用程序中存储了30至300 bpm之间的所有节奏).如果用户想在节拍器工作时更改节奏,则这种解决方案似乎有点死胡同. 总而言之 - 我正在寻找具有代码/文本/WHATEV的任何专业资源,而不是2000页的数学毕业生信号处理书,可以帮助我设计具有一些录音功能的体面的节拍器. 解决方案 也许我使用Java编写节拍器的经验会有所帮助.钥匙不是依赖系统时钟,而是计算当时的PCM帧的确切数量并放置单击音频PCM.以44100 fps的样本速率,基本上准确至1/44100秒. 我无法告知您如何流媒体PCM并
10 2023-09-03
编程技术问答社区
在Librosa中获得与STFT相关的频率
使用librosa.stft()计算频谱图时,如何恢复相关的频率值?我对librosa.display.specshow中的图像不感兴趣,而是想拥有这些值. y, sr = librosa.load('../recordings/high_pitch.m4a') stft = librosa.stft(y, n_fft=256, window=sig.windows.hamming) spec = np.abs(stft) spec给我每个频率的"振幅"或"功率",而不是频率箱本身.我已经看到有一个display.specshow函数将在热图的垂直轴上显示这些频率值,但不会返回值本身. 我正在寻找与单个FFT类似的东西,但在librosa文档中找不到等效的东西. 解决方案 我想指出这个问题并特别回答:"如何在FFT中获得每个值的频率?.除了咨询 libresa stft的文档水平轴是时轴,而垂直轴为频率.频谱图中的每一列都是切片的FFT. 我们还知道有一个 ho
8 2023-09-03
编程技术问答社区
Librosa的采样率问题
进行STFT时,然后在16位44.1 kHz音频文件上使用库天秤座: import librosa y, sr = librosa.load('test.wav', mono=False) y1 = y[0,] S = librosa.core.stft(y1) z1 = librosa.core.istft(S, dtype=y1.dtype) librosa.output.write_wav('test2.wav', z1, sr) 输出只是一个22 kHz音频文件.为什么?天秤座的采样率在哪里? 解决方案 librosa.load()函数启用目标采样,其中您导入的音频文件可以重新采样到由关键字参数sr指定的目标采样率. 如果要使用原始样本率,则必须将目标采样率显式设置为无:sr=None.默认情况下,sr=22050,这就是您的输出〜22kHz的原因. 以示例: 默认设置 - 默认为22,050 Hz 的子采样 In[51]: filena
10 2023-09-03
编程技术问答社区
根据音色(音调)按相似性对声音进行排序
说明 我希望能够根据声音的 timbre(tough)对列表中的声音集合进行分类.这是一个玩具示例,我在其中手动对我创建的12个声音文件的频谱图和上传到此repo .我知道它们是正确排序的,因为每个文件产生的声音与之前的文件中的声音完全相同,但是添加了一个效果或过滤器. 例如,声音的正确排序x,y和z其中 听起来x和y是相同的,但是y具有失真效果 听起来y和z是相同的,但是z滤除了高频 声音x和z是相同的,但是z具有失真效果,z滤除高频 将是x, y, z 仅通过查看频谱图,我就可以看到一些视觉指标暗示应该如何对声音进行分类,但是我想通过让计算机识别此类指标来自动化排序过程. 上图中的声音的声音 中的声音文件 都是相同的长度 所有相同的音符/俯仰 所有人都完全从同一时间开始. 所有相同的振幅(响度水平) 即使所有这些条件都是不是是真的,我也希望我的分类工作(但是即使它不能解决这个问题,我也会接受最好的答案) ,例如,在下面的图
4 2023-09-03
编程技术问答社区
一个音符的录制音频产生多个起音时间
我正在使用 librosa 库库库进行音调和发作检测.具体来说,我正在使用/p> 这是我的代码: def detect_pitch(y, sr, onset_offset=5, fmin=75, fmax=1400): y = highpass_filter(y, sr) onset_frames = librosa.onset.onset_detect(y=y, sr=sr) pitches, magnitudes = librosa.piptrack(y=y, sr=sr, fmin=fmin, fmax=fmax) notes = [] for i in range(0, len(onset_frames)): onset = onset_frames[i] + onset_offset index = magnitudes[:, onset].argmax() pitch = pitches[index, onset]
38 2023-09-03
编程技术问答社区
Librosa螺距跟踪-STFT
我正在使用这 this 音频文件.如您所知,这是在背景中有一点噪音的吉他上演奏的E2音符. 我使用STFT生成了此频谱图: 我正在使用上面链接的算法: y, sr = librosa.load(filename, sr=40000) pitches, magnitudes = librosa.core.piptrack(y=y, sr=sr, fmin=75, fmax=1600) np.set_printoptions(threshold=np.nan) print pitches[np.nonzero(pitches)] 结果,我在fmin和fmax之间几乎得到了所有可能的频率.我与piptrack方法的输出有什么关系才能发现时间范围的基本频率? 更新 我仍然不确定那些2D阵列代表什么.假设我想找出框架5中的82Hz的强度. 但是,piptrack做一些可能有用的事情,我真的不明白什么. pitches[f, t] contains instan
4 2023-09-03
编程技术问答社区
我可以将用librosa生成的光谱图转换为音频吗?
我将一些音频文件转换为频谱图,并使用以下代码将它们保存到文件: import os from matplotlib import pyplot as plt import librosa import librosa.display import IPython.display as ipd audio_fpath = "./audios/" spectrograms_path = "./spectrograms/" audio_clips = os.listdir(audio_fpath) def generate_spectrogram(x, sr, save_name): X = librosa.stft(x) Xdb = librosa.amplitude_to_db(abs(X)) fig = plt.figure(figsize=(20, 20), dpi=1000, frameon=False) ax = fig.add_axes(
20 2023-09-03
编程技术问答社区
计算帧中的FFT并写入文件
我是Python的新手,我正在尝试获取上传的WAV文件的FFT值,然后返回文本文件(使用GCP)的每一行中的每个帧的FFT 使用scipy或libreosa 我需要的帧速率是30fps WAVE文件将为48K样本率 所以我的问题是 如何将整个WAV文件的样品分为每个帧的样品 如何添加空样品以使框架样品的长度为2(48000/30 = 1600添加448个空样品以使其成为2048) 如何将最终的FFT数组归一化为[-1,1]? 解决方案 您可以将Pyaudio与回调一起使用,以实现您正在做的任何事情. import pyaudio import wave import time import struct import sys import numpy as np if len(sys.argv)
8 2023-08-22
编程技术问答社区
如何在Python中对两个音频事件进行关联(检测它们是否相似)?
对于我的项目,我必须检测到两个音频文件是否相似,以及第二个音频文件在第二个音频文件中.我的问题是我尝试使用the numpy.correlate.我不知道我是否以正确的方式进行.如何检测其他音频文件中是否包含音频? import librosa import numpy long_audio_series, long_audio_rate = librosa.load("C:\\Users\\Jerry\\Desktop\\long_file.mp3") short_audio_series, short_audio_rate = librosa.load("C:\\Users\\Jerry\\Desktop\\short_file.mka") for long_stream_id, long_stream in enumerate(long_audio_series): for short_stream_id, short_stream in enumerate(sho
8 2023-08-22
编程技术问答社区
加载 librosa 和读取 scipy.io.wavfile 之间的区别
我有一个关于librosa的load函数与scipy.io.wavfile的read函数之间的差异的问题. . from scipy.io import wavfile import librosa fs, data = wavfile.read(name) data, fs = librosa.load(name) 导入的语音文件是同一文件.如果运行上面的代码,则数据值以不同的方式来自两个函数.我想知道为什么数据的值不同. 解决方案 来自 将音频文件作为浮点时间序列加载. 音频将自动重新采样至给定的速率(默认SR = 22050). 要保留文件的本机采样率,请使用sr = none. 其他解决方案 还值得一提的是,librosa.load()将数据归一化(使所有数据点均在1和-1之间),而wavfile.read()则不符合数据. 其他解决方案 数据有所不同,因为scipy不正常输入信号. 这是一个片段,显示了如何更改scipy输出
2 2023-08-21
编程技术问答社区