【第二章.EQ各频段的基本知识】
1.[20-60Hz]影响音色的空间感,因为乐音的基音大多在这段频率以上,这段很难表现,powermp3没有这段均衡。
2.[60-100Hz]影响声音的混厚感,是低音的基音区。如果这段频率很丰满,音色会显得厚实、混厚感强,如果不足,音色会变得无力;而如果过强,音色会出现低频共振声,有轰鸣声的感觉。有大鼓、定音鼓,还有钢琴、大提琴、大号等少数存在极低频率的乐器多表现在此段。
3.[80-160Hz]主要表现音乐的厚实感,音响在这部分重放效果好的话,会感到音乐厚实、有底气。这部分表现得好的话,在80Hz以下缺乏时,甚至不会感到缺乏低音。如表现不好,音乐会有沉闷感,甚至是有气无力许多低音炮音箱的重放上限,具此可判断您的低音炮音箱频率上限。
4.[150-300Hz]影响声音的力度,尤其是男音的力度。这段频率是男声声音的低频基音频率,同时也是乐音中和弦的根音频率。
5.[300-500Hz]表现人声的(唱歌、朗诵),这个频段上可以表现人声的厚度和力度,好则人声明亮、清晰,否则单薄、混浊。
6.[800Hz]影响音色的力度。如果这个频率丰满,音色会显得强劲有力;如果不足,音色将会显得松弛,也就是800Hz以下的成分特性表现突出了,低频成分就明显;而如果过多,则会产生喉音感。如果喉音过多了,则会失掉语音的个性,适当的喉音则可以增加性感,因此,音响师把这个频率称为"危险频率",人声,打击乐多表现于此。
7.[1kHz]是音响器材测试的标准参考频率,通常在音响器材中给出的参数是在1kHz下测试。这是人耳最为敏感的频率。
8.[1.2kHz]可以适当多一点,不宜太多,可以提高声音的明亮度,过多会使声音发硬。
9.[2k-4kHz]穿透力很强。人耳耳腔的谐振频率是1∽4KHz,所以人耳对这个频率也是非常敏感的。2-4kHz对声音的亮度影响很大,这段声音一般不宜衰减。这段对音乐的层次影响较大。如果空虚频率成分过少,听觉能力会变差,语音显得模糊不清了。如果过强了,则会产生咳声的感觉。,有适当的提升可以提高声音的明亮度和清晰度,但是在4kHz时不能有过多的突出,否则女声的齿音会过重。
10.[4k-8kHz]这段频率最影响语音的清晰度、明亮度、如果这频率成分缺少,音色则变得平平淡淡;如果这段频率成分过多,音色则变得尖锐,人声可能出现齿音。这段频率通常通过压限器来美化。部分女声、以及大部分吹奏类乐器。
11.[8k-12kHz]这段是音乐的高音区,对音响的高频表现感觉最为敏感。适当突出(一点即可)对音响的的层次和色彩有较大帮助,也会让人感到高音丰富。但是,太多的话会增加背景噪声,同时也会让人感到声音发尖、发毛。如果这段缺乏的话,声音将缺乏感染力和活力。
12.[12k-16kHz]能够影响整体的色彩感,这段过于黯淡会导致乐器失去个性,过多则会产生毛刺感。
13.[16k-20kHz]可能很多人都听不到,听不到并不意味着器材无法回放,只有很少人可以听到20kHz。这段频率可以影响高频的亮度,以及整体的空间感,过少会让人觉得有点闷,太多则会产生飘忽感,容易产生听觉疲劳。电子合声、古筝钢琴等乐器的泛音多表现于此。
【第三章.EQ各频段调节效果】
每段频率分为[过低]、[半满]、[过高],效果以~隔开。
《1》20Hz-60Hz[过低]空虚~[半满]空间感良好~[过高]低频共振声显现"嗡"的声音。
《2》60Hz-100Hz[过低]无力~[半满]混厚感强~[过高]低频共振声显现"轰"的声。
《3》100Hz-150Hz[过低]单薄~[半满]丰满度增强,浑浊~[过高]显现"哼"声音。
《4》150Hz-300Hz[过低]软绵绵~[半满]声音力度强~[过高]生硬。
《5》300Hz-500Hz[过低]空洞~[半满]语音有力度~[过高]有电话声音色。
《6》800Hz[过低]松驰感~[半满]强劲感~[过高]喉音重。
《7》500Hz--1KHz[过低]有收缩感~[半满]声音的轮廓明朗~[过高]声音向前凸出。
《8》1-2KHz[过低]松散,使音色脱节~[半满]通透感强~[过高]跃感。
《9》2-3KHz[过低]朦胧~[半满]明亮度增强~[过高]呆板。
《10》4KHz[过低]模糊~[半满]穿透力强~[过高]咳音量。
《11》4-5KHz[过低]音源变远~[半满]响度感强~[过高]声音变近。
《12》5-6KHz[过低]含糊~[半满]清晰度强~[过高]尖利。
《13》6-8KHz[过低]暗淡~[半满]透明~[过高]齿音重。
《14》8-10K[过低]平淡~[半满]S音明显,通透感~[过高]尖锐。
《15》10-12KHz[过低]乏味,失去光泽~[半满]金属声强烈~[过高]尖噪。
《16》12-16KHz[过低]失掉光彩~[半满]金光四溅~[过高]刺耳。
《17》16-20KHz[过低]韵味失落,色彩失落缺乏音色表现力~[半满]靠人体颅骨传导感受声音的韵味,色彩富于音色表现力~[过高]宇宙声感和不稳定感。
【简单的说】
1、100Hz属于温暖段,如果使这部分加强能使低音部分更加的柔和温暖
2、200Hz属于混浊低沉,调音色时可适当减弱本段
4、1KHz~2KHz这一频段很容易有"嗡嗡"的声音,削弱该频带会使声音干净,但同时也失去一部分效果
5、2KHz~4KHz属于温暖而又不失亮度,非常适合吉他类的乐器
6、4KHz~5KHz属于音质比较粗糙的频段,这部分的过高会导致整体音量的上升
7、7KHz或7KHz以上,就属于高频段,音质上显得尖锐很有攻击性,很容易产生嘶嘶声音
8、8KHz~10KHz范围属于钗片的音色范围,如有"嚓嚓"音可适当降低改频段
Original: https://blog.csdn.net/weixin_36207513/article/details/112818172
Author: 又逢账号起名时
Title: poweramp最完美设置_十段均衡器的设置和参数[附带推荐poweramp均衡器设置]
相关阅读1
Title: Raki的读paper小记:Audio Captioning with Composition of Acoustic and Semantic Information
Abstract & Introduction & Related Work
- 研究任务
音频字幕 - 已有方法和相关工作
- 面临挑战
- 创新思路
加入了语义信息,使用了semantic embedding,梅尔能源特征,VGGish embedding - 实验结论
sota
Proposed Method
log Mel特征和部分标题是分开编码的
首先从音频信号里面抽取PANNs audio embedding,然后从每个音频片段的标题中提取主语-动词嵌入,把这两个embedding concat起来
; Audio Features
Acoustic Content
我们使用96毫秒的汉明窗提取对数梅尔能量特征,重叠率为50%,每帧获得64个对数梅尔能量
将频带设置为125到7500 Hz
; Audio Embeddings
使用VGGish模型和PANNs embedding来抽取音频特征
在不同的PANNS架构中,我们使用Wavegram-Logmel-CNN14模型作为特征提取器
Subject-Verb Embedding
为了提取语义嵌入,每个数据集的主语-动词嵌入向量都是单独获得的。首先,每个音频记录的每个音频标题都由斯坦福解析器处理,并提取标题的主语和动词。为了减少维度,我们使用主语和动词的词根形式。然后,通过消除重复的词来收集主语和动词,并创建主语-动词嵌入列表。提取主语-动词嵌入的算法在算法1中给出
测试音频片段中抽取主语-动词embedding的过程:
; Encoder
GRU的公式...
使用Word2Vec作为text embedding
Decoder
解码器使用编码的音频、主语-动词嵌入和以前的部分字幕,逐字预测部分字幕。GRU被用来解码音频和文本表示法。拟议的GRU层由128个单元组成。我们在全连接层之后使用Sof tmax。解码器逐字进行预测,预测词的序列给出字幕。我们提出的RNN-GRU-EncDec训练算法在算法2中给出
; RESULTS
CONCLUSION
根据这些结果,我们未来的研究方向是努力改善语言建模,并使用数据增强技术,试图提高我们模型的性能。在音频字幕上获得更好的结果可以在音频分析中产生改进。此外,可以研究多模态模型来提高视频应用的性能,如视频字幕、视频检索和监控系统,这些系统主要由音频和视频分析组成
Remark
首先吐槽,你说自己的model很novel,你novel个蛇皮
其次,paper里面的图居然不是矢量图...模糊的一批,我人晕了
但是work了,那就勉强还行吧
Original: https://blog.csdn.net/Raki_J/article/details/123059018
Author: 爱睡觉的Raki
Title: Raki的读paper小记:Audio Captioning with Composition of Acoustic and Semantic Information
相关阅读2
Title: Pyspark聚类--PowerIterationClustering
PowerIterationClustering
class pyspark.ml.clustering.PowerIterationClustering(k=2, maxIter=20, initMode='random', srcCol='src', dstCol='dst', weightCol=None)
幂迭代聚类 (PIC),一种由 Lin 和 Cohen 开发的可扩展图聚类算法。 从摘要中:PIC 在数据的归一化成对相似度矩阵上使用截断幂迭代找到数据集的非常低维嵌入。 这个类还不是构造器/转换器,使用 assignClusters() 方法运行 PowerIterationClustering 算法。
assignClusters(dataset)[source] 运行 PIC 算法并为每个输入顶点返回一个簇分配。
参数数据集——具有 src、dst、权重列的数据集,表示亲和矩阵,即 PIC 论文中的矩阵 A。 假设 src 列值为 i,dst 列值为 j,权重列值为相似度 s,ij,,必须为非负数。 这是一个对称矩阵,因此 s,ij, = s,ji,。 对于任何具有非零相似度的 (i, j),输入中应该有 (i, j, s,ij,) 或 (j, i, s,ji,)。 i = j 的行被忽略,因为我们假设 s,ij, = 0.0。
返回一个数据集,其中包含顶点 id 列和该 id 的相应集群。 它的结构将是: - id:Long - cluster:Int
dstCol = Param(parent='undefined', name='dstCol', doc='目标顶点 ID 的输入列的名称。')
initMode = Param(parent='undefined', name='initMode', doc="初始化算法。这可以是"随机"以使用随机向量作为顶点属性,也可以是"度"以使用归一化的相似性总和 与其他顶点。支持的选项:"随机"和"度"。")
srcCol = Param(parent='undefined', name='srcCol', doc='源顶点 ID 的输入列的名称。')
weightCol = Param(parent='undefined', name='weightCol', doc='weight 列名。如果未设置或为空,我们将所有实例权重视为 1.0。')
01.创建数据集
from pyspark.sql import SparkSession
spark = SparkSession.builder.config("spark.driver.host","192.168.1.10")\
.config("spark.ui.showConsoleProgress","false").appName("PowerIterationClustering")\
.master("local[*]").getOrCreate()
data = [(1, 0, 0.5),
(2, 0, 0.5), (2, 1, 0.7),
(3, 0, 0.5), (3, 1, 0.7), (3, 2, 0.9),
(4, 0, 0.5), (4, 1, 0.7), (4, 2, 0.9), (4, 3, 1.1),
(5, 0, 0.5), (5, 1, 0.7), (5, 2, 0.9), (5, 3, 1.1), (5, 4, 1.3)]
df = spark.createDataFrame(data).toDF("src", "dst", "weight")
df.show()
df.printSchema()
输出结果:
+---+---+------+
|src|dst|weight|
+---+---+------+
| 1| 0| 0.5|
| 2| 0| 0.5|
| 2| 1| 0.7|
| 3| 0| 0.5|
| 3| 1| 0.7|
| 3| 2| 0.9|
| 4| 0| 0.5|
| 4| 1| 0.7|
| 4| 2| 0.9|
| 4| 3| 1.1|
| 5| 0| 0.5|
| 5| 1| 0.7|
| 5| 2| 0.9|
| 5| 3| 1.1|
| 5| 4| 1.3|
+---+---+------+
root
|-- src: long (nullable = true)
|-- dst: long (nullable = true)
|-- weight: double (nullable = true)
02.构造聚类模型,并转换原有数据查看
from pyspark.ml.clustering import PowerIterationClustering
pic = PowerIterationClustering(k=2, maxIter=40, weightCol="weight")
assignments = pic.assignClusters(df)
assignments.show()
assignments.sort(assignments.id).show(truncate=False)
输出结果:
+---+-------+
| id|cluster|
+---+-------+
| 4| 1|
| 0| 1|
| 1| 1|
| 5| 0|
| 2| 1|
| 3| 1|
+---+-------+
+---+-------+
|id |cluster|
+---+-------+
|0 |1 |
|1 |1 |
|2 |1 |
|3 |1 |
|4 |1 |
|5 |0 |
+---+-------+
Original: https://blog.csdn.net/weixin_46408961/article/details/123438209
Author: Gadaite
Title: Pyspark聚类--PowerIterationClustering
相关阅读3
Title: 强化学习,直接策略搜索,策略梯度,入门样例
策略梯度,入门样例
原文链接:
https://www.cnblogs.com/Twobox/
参考链接:
https://datawhalechina.github.io/easy-rl/#/chapter4/chapter4
https://zhuanlan.zhihu.com/p/358700228
策略网路结构
算法流程与策略梯度
添加一个基线
调整更合适的分数
代码结构
需要的包
import numpy as np
import gym
import matplotlib.pyplot as plt
import torch # torch.optim.SGD 内置优化器
import torch.nn as nn # 模型库
import torch.nn.functional as F # 内置loss函数
from torch.utils.data import TensorDataset # 包装
from torch.utils.data import DataLoader # 迭代器
model.py
def loss_fun(p, advantage, N):
# p就是p(a|s) advantage 就是权重优势
# p Tensor格式 advantage为数字数组1
advantage = torch.Tensor(advantage)
# 目标函数 1/N sum(sum(a' * log p'))
loss = -torch.sum(torch.log(p) * advantage) / N
return loss
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.linear1 = nn.Linear(4, 128)
self.linear2 = nn.Linear(128, 2)
# self.linear3 = nn.Linear(20, 2)
def forward(self, x):
# xb = xb.view(xb.size(0), -1)
out = self.linear1(x)
out = F.relu(out)
out = self.linear2(out)
out = F.softmax(out, dim=-1)
return out
def fit(self, p, advantage, N):
opt = torch.optim.Adam(self.parameters(), 0.005)
loss = loss_fun(p, advantage, N)
opt.zero_grad()
loss.backward()
opt.step()
opt.zero_grad()
agent.py
class Agent:
def __init__(self, gamma):
self.model = Model()
# 目标函数 1/N sum(sum(a' * log p'))
self.p = []
self.advantage = []
self.N = 0
self.gamma = gamma
def get_action_p(self, state):
# 转化为Tensor , 此时为一维
state = torch.FloatTensor(state)
# 转化为二维,最外面加个[]
state = torch.unsqueeze(state, 0)
p = self.model(state)
return p # tensor
def clear(self):
self.advantage.clear()
self.p.clear()
self.N = 0
def pay_n_times(self, N, env):
# 玩N次,追加存储N次经验
self.N += N
r_sum = 0 # 所有奖励
advantage = []
for n in range(N):
state = env.reset()
r_list = [] # 一个回合 每个动作的奖励
done = False
while not done:
p = self.get_action_p(state)
# 按概率采样下表;在dim为1的位置进行采样;这里的结果为[[0 or 1]]
action = torch.multinomial(p, 1).item() # 这时候直接是数字
s_, r, done, _ = env.step(action)
state = s_
r_list.append(r)
# 后续需要对self.p使用torch.cat方法
self.p.append(p[0][action].unsqueeze(0))
r_sum += sum(r_list)
# sum(gamma^i * r)
ad_list = []
ad_temp = 0
for i in reversed(range(len(r_list))):
ad_temp = ad_temp * self.gamma + r_list[i]
ad_list.append(ad_temp)
ad_list.reverse()
advantage += ad_list
b = r_sum / N
advantage = [a - b for a in advantage]
self.advantage += advantage
# 返回平均分数
return b
def learn(self):
p = torch.cat(self.p)
advantage = torch.FloatTensor(self.advantage)
self.model.fit(p, advantage, self.N)
main.py
env = gym.make("CartPole-v1")
agent = Agent(0.95)
T = 1000 # 更新多少次梯度
N = 50 # 每次跟新需要采样多少回合的经验
x, y = [], []
for t in range(T):
avg_r = agent.pay_n_times(N, env)
x.append(t)
y.append(avg_r)
print("{} : {}".format(t, avg_r))
agent.learn()
agent.clear()
plt.plot(x,y)
plt.pause(0.1)
plt.plot(x,y)
plt.show()
结果
本文原创作者:魏雄
原文链接:
https://www.cnblogs.com/Twobox/
Original: https://www.cnblogs.com/Twobox/p/16689398.html
Author: Wei_Xiong
Title: 强化学习,直接策略搜索,策略梯度,入门样例