基频的文字定义以及如何用librosa提取wav文件基频
基频的文字定义以及如何用librosa提取wav文件基频
今天就跟大家聊聊有关基频的文字定义以及如何用librosa提取wav文件基频,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1. 音高和基频
2. 基频定义
3.谐波
泛音(overtones) == 谐波 (Harmonics)
根据这个, 可以解耦音色和内容
第一共振峰, 第二共振峰...等的位置, 特别是相对位置, 决定了发音内容TODO需要讨论|不同元音对不同倍数泛音共振加强不同, 体现的也有一部分是能量的大小相对差异
基频的高度, 共振峰的绝对高度, 也一定程度和发音内容相关, 但是需要减掉说话人的平均基频值, 再去看
人的基频, 共振峰等的绝对高度, 和音色相关, 比如性别的不同, F0范围的不同
共振峰的相对位置, 最大的信息时发音内容, 但是相同发音内容, 又会有每个人的发音习惯和口腔结构, 所以次要信息也有音色信息. 这点和speaker identity更像, ASV特征
真正的"厚实, 亮, 尖, 好听"也算作音色, 但是是同一个人也可以模拟的, 比如单人多角色小说 唱歌等. 不同共振峰频率分配的能量, 会导致听感. 人和人之间区别很大, 也可以导致ASV
因此, 1-如果对mel谱每个人, 进行每个频率独立的能量的norm(0, 1), 则一定程度能去掉个人的声音特性, 并且保留发音信息(这个好好想, 涉及到位置和位置的能量)| 这个过程相当于去掉人的口腔特征对特定发音的"人加重"
接着上面的, 2-如果能抽离出每一时刻的f0和各个共振峰, 将这些位置也随着f0的位置做归一化, 也能一定程度去掉音色, 并且保留发音信息 || 这个过程相当于去掉人的声带特征对特定发音的"人加重"
提一个问题, 合唱的时候大家都哼"哼", 同一个调, 用此来分析
(
音色:音色的区别是由于各种振动,其总能量在泛音各音级上能量分配不同而造成的。
)
回答:
只让人哼同一个字, 相当于把人"退化", 或者"类比"为小提琴, 每个人都是小提琴, 但是男的和女的, 男高音和男低音, 是天性不同的小提琴, 对泛音的能量分配就算哼同一个字, 天生分配也不同. 不过差距并不大(相比于哼不同字)罢了
再提一个问题, 男生说的ba和女生说的ba的频率和共振峰位置一样么?是不是需要norm之后, 就一样的, 每个人声带的结构和胸腔肌肉力量不同
图上的水平线含义:水平线表示一个歌手在某个音高上持续了一段时间。越亮的线表示振幅越大,听感上当然就音量大了
直线就是一个长直音,考察长直音主要看稳定度,整个线越直则这个长音越稳定。如果大抖就是破音,如果小抖就是不稳。如果歪了,那就是音准没把握好 TODO, 需要讨论
波浪线就是颤音。波浪越大则颤音越大。看颤音也是看稳定度,如果颤的不稳就是气息出现问题,控制不好
3.1. 如何观察和评价泛音/谐波
看泛音主要看三点:丰富与否;分布情况;泛音的音量。对比泛音主要是看与基频的对比。因为音频文件的音量是可以调整的,单纯的看泛音大小没多大意义,以基频为参照才比较有实际意义。(低频的共鸣情况取决于元音的类型,每一个元音都有自己的特定的共鸣特性。一般来说,基频被共鸣强化的情况比较少)
此例中第一泛音巨大(看多了就知道,一般都是第一泛音最大),在3000左右的三个泛音也很强
另一种观察方法就是和伴奏比,人声线越明显则人声越强,越能穿透伴奏. 之后作者有举例, 我就略了.....偷个懒
4. librosa概述
5. librosa提取F0
https://librosa.org/doc/main/generated/librosa.pyin.html
y,sr=librosa.load(librosa.ex('trumpet'))f0,voiced_flag,voiced_probs=librosa.pyin(y,fmin=librosa.note_to_hz('C2'),fmax=librosa.note_to_hz('C7'))times=librosa.times_like(f0)importmatplotlib.pyplotaspltD=librosa.amplitude_to_db(np.abs(librosa.stft(y)),ref=np.max)fig,ax=plt.subplots()img=librosa.display.specshow(D,x_axis='time',y_axis='log',ax=ax)ax.set(title='pYINfundamentalfrequencyestimation')fig.colorbar(img,ax=ax,format="%+2.fdB")ax.plot(times,f0,label='f0',color='cyan',linewidth=3)ax.legend(loc='upperright')
看完上述内容,你们对基频的文字定义以及如何用librosa提取wav文件基频有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。