-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauto_tune.html
186 lines (157 loc) · 6.4 KB
/
auto_tune.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>声学算法自动测试与自动调参</title>
<link rel="stylesheet" type="text/css" href="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/css/readtheorg.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://fniessen.github.io/org-html-themes/src/lib/js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/js/readtheorg.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
<link rel="stylesheet" type="text/css" href="/main.css" media="screen" />
<link rel="stylesheet" type="text/css" href="../main.css" media="screen" />
<link rel="stylesheet" type="text/css" href="./main.css" media="screen" />
<link rel = "icon" href = "/icon.png" type = "image/x-icon">
</head>
<body>
<div id="content" class="content">
<h1 class="title">声学算法自动测试与自动调参</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org0000012">1. 声学算法自动测试与自动调参</a>
<ul>
<li><a href="#org000000c">1.1. Overview</a>
<ul>
<li><a href="#org0000006">1.1.1. 自动测试</a></li>
<li><a href="#org0000009">1.1.2. 自动调参</a></li>
</ul>
</li>
<li><a href="#org000000f">1.2. 任务 <code>[50%]</code></a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org0000012" class="outline-2">
<h2 id="org0000012"><span class="section-number-2">1.</span> 声学算法自动测试与自动调参</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org000000c" class="outline-3">
<h3 id="org000000c"><span class="section-number-3">1.1.</span> Overview</h3>
<div class="outline-text-3" id="text-1-1">
<p>
自动调参依赖于自动测试
</p>
</div>
<div id="outline-container-org0000006" class="outline-4">
<h4 id="org0000006"><span class="section-number-4">1.1.1.</span> 自动测试</h4>
<div class="outline-text-4" id="text-1-1-1">
<p>
要进行自动测试, 最重要的是能自动计算 metric, 例如 snr 和 pesq.
</p>
</div>
<div id="outline-container-org0000000" class="outline-5">
<h5 id="org0000000"><span class="section-number-5">1.1.1.1.</span> pesq</h5>
<div class="outline-text-5" id="text-1-1-1-1">
<p>
pesq 需要输入原始语音 (clean) 和仿真算法处理后的语音 (denoised)
</p>
</div>
</div>
<div id="outline-container-org0000003" class="outline-5">
<h5 id="org0000003"><span class="section-number-5">1.1.1.2.</span> snr</h5>
<div class="outline-text-5" id="text-1-1-1-2">
<p>
按目前的实现, snr 需要:
</p>
<ol class="org-ol">
<li>clean 做 vad, 确定有语音的段落</li>
<li>带噪声的声音 (mixed), 用来计算算法处理前的 snr</li>
<li>denoised, 用来计算算法处理后的 snr</li>
</ol>
<p>
在计算 snr 过程中 clean, mixed, denoised 需要对齐
</p>
<p>
用 mixed 或 denoised 也可以做 vad, 但效果不好, 无法很精确的找到语音的开始位置.
</p>
</div>
</div>
</div>
<div id="outline-container-org0000009" class="outline-4">
<h4 id="org0000009"><span class="section-number-4">1.1.2.</span> 自动调参</h4>
<div class="outline-text-4" id="text-1-1-2">
<p>
自动调参, 类似于 DL 领域的超参数调节, 常用的方法是 grid_search, random_search 和基于 bayes 的方法, 可用的工具有 hyperopt 和 wandb 等, 基本流程是:
</p>
<ol class="org-ol">
<li>优化器 (hyperopt, wandb) 从提前定义好的参数空间中按一定算法选择一组参数, 并通过自动测试获得参数对应的 metric</li>
<li>把 metric 反馈给优化器, 重复步骤 1</li>
</ol>
</div>
</div>
</div>
<div id="outline-container-org000000f" class="outline-3">
<h3 id="org000000f"><span class="section-number-3">1.2.</span> 任务 <code>[50%]</code></h3>
<div class="outline-text-3" id="text-1-2">
<ul class="org-ul">
<li class="on"><code>[X]</code> <p>
自动计算 metric
</p>
<p>
包括 pesq 计算, vad, 音频对齐, snr 计算.
</p></li>
<li class="on"><code>[X]</code> 基于 wandb 的自动调参</li>
<li class="on"><code>[X]</code> <p>
PR 曲线
</p>
<p>
由于 snr 与 pesq 是负相关的, 可以画出类似 PR 曲线 (precision recall curve) 的图:
</p>
<ol class="org-ol">
<li>自动调参过程中会得到不同组合的 snr 与 pesq</li>
<li>在平面坐标系上描点, x 为 snr, y 为 pesq, 这些点的凸包 (convex hull) 的右上部分相当于 PR 曲线, 围成的面积越大越好</li>
</ol>
<p>
最终选择的参数会对应 PR 曲线上的某一个点. 另外, PR 曲线也可以度量算法的调整
(而非参数的调整) 是否有效.
</p></li>
<li class="off"><code>[ ]</code> <p>
确认自动调参有效
</p>
<p>
使用设备录 N 个音频, 使用 PC 仿真代码和 0.8N 个音频分别进行手动调参和自动调参,
使用剩下的 0.2N 个音频去对比调参的效果.
</p></li>
<li class="off"><code>[ ]</code> <p>
PC 仿真代码做为基准代码
</p>
<p>
用于自动测试和调参的 PC 仿真代码需要是其它所有代码的基准, 其它代码总是要从 PC
仿真代码 fork 出来, 且只能做少量和硬件相关的改动.
</p></li>
<li class="off"><code>[ ]</code> <p>
更多测试数据
</p>
<p>
需要不同噪音/语音组合的 clean, mixed 数据, 用于自动调参和和自动测试.
</p></li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: sunway@dogdog.run<br />
Date: 2022-12-13 Tue 11:47<br />
Last updated: 2022-12-13 Tue 19:08</p>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a>
</div>
</body>
</html>