基频的文字定义以及如何用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) import matplotlib.pyplot as plt D = 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='pYIN fundamental frequency estimation') fig.colorbar(img, ax=ax, format="%+2.f dB") ax.plot(times, f0, label='f0', color='cyan', linewidth=3) ax.legend(loc='upper right')
看完上述内容,你们对基频的文字定义以及如何用librosa提取wav文件基频有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
文章名称:基频的文字定义以及如何用librosa提取wav文件基频
文章起源:http://hbruida.cn/article/pseihg.html