質問編集履歴
3
誤字
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Matlabで
|
1
|
+
Matlabで変換を用いて尺を長くする
|
test
CHANGED
File without changes
|
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,86 +1,8 @@
|
|
1
1
|
###前提・実現したいこと
|
2
2
|
|
3
|
-
Matlabで時間スケール変換を用いて、音質は損なわずに音声データの尺を2倍長くしようとしています。
|
3
|
+
Matlabで時間スケール変換を用いて、音質は損なわずに音声データの尺を2倍長くしようとしています。
|
4
|
-
|
5
|
-
現状で困っているのは、尺をなんとなく2倍にできても音質(高さやノイズ)が変化してしまっている点です。
|
6
4
|
|
7
5
|
|
8
|
-
|
9
|
-
[時間スケール変換に関する参考Webサイト](http://www.kumikomi.net/archives/2009/08/dsp.php)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
###該当のソースコード
|
14
|
-
|
15
|
-
(できていること)
|
16
|
-
|
17
|
-
1, stretch関数を作るためのコード
|
18
|
-
|
19
|
-
```Matlab
|
20
|
-
|
21
|
-
%coef: stretch factor
|
22
|
-
|
23
|
-
%Hs: synthesis hopsize
|
24
|
-
|
25
|
-
%Ha: analysis hopsize
|
26
|
-
|
27
|
-
function s = stretch(y, coef, Fs)
|
28
|
-
|
29
|
-
[L, ~] = size(y); % total length of
|
30
|
-
|
31
|
-
L = L -1; % usually involves zero
|
32
|
-
|
33
|
-
N = fix(0.05*Fs); % 50msec frame
|
34
|
-
|
35
|
-
Hs = floor(N/2); % fix size synthesis hopsize
|
36
|
-
|
37
|
-
Ha = floor(Hs*coef); % define Ha with input coef
|
38
|
-
|
39
|
-
numFrame = floor((L-N)/Ha); % number of analytic frame
|
40
|
-
|
41
|
-
y2 = zeros(floor(L/coef),1);
|
42
|
-
|
43
|
-
for i=1:numFrame-1
|
44
|
-
|
45
|
-
xa = y(Ha*(i-1)+1:Ha*(i-1)+N);
|
46
|
-
|
47
|
-
window = hanning(N);
|
48
|
-
|
49
|
-
xa = xa .* window; % apply Hann window
|
50
|
-
|
51
|
-
% reconstruct the synthesis frames
|
52
|
-
|
53
|
-
y2(Hs*(i-1)+1:Hs*(i-1)+N) = y2(Hs*(i-1)+1:Hs*(i-1)+N) + xa(1:N);
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
```
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
2, 音声ファイルの音の高さを変えるためのコード
|
64
|
-
|
65
|
-
```Matlab
|
66
|
-
|
67
|
-
%coef: stretch factor
|
68
|
-
|
69
|
-
[y, Fs] = audioread('440.wav')
|
70
|
-
|
71
|
-
coef = 2.0
|
72
|
-
|
73
|
-
s = stretch(y, coef, Fs);
|
74
|
-
|
75
|
-
sound(s, Fs);
|
76
|
-
|
77
|
-
```
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
[音声ファイルのダウンロード元](http://www.mediacollege.com/audio/tone/download/)
|
82
|
-
|
83
|
-
440Hzの5秒のwavファイルを使っています。
|
84
6
|
|
85
7
|
|
86
8
|
|
@@ -102,8 +24,4 @@
|
|
102
24
|
|
103
25
|
該当のソースコード1はそのままで、2を上記のように書き換えました。
|
104
26
|
|
105
|
-
今回は5秒の長さの音声ファイルを使ってい
|
27
|
+
今回は5秒の長さの音声ファイルを使っています。
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
また、coef(coefficient)という係数が鍵を握っていそうだというところまではつかめています。
|
1
coefについて
test
CHANGED
File without changes
|
test
CHANGED
@@ -103,3 +103,7 @@
|
|
103
103
|
該当のソースコード1はそのままで、2を上記のように書き換えました。
|
104
104
|
|
105
105
|
今回は5秒の長さの音声ファイルを使っているので、色々試して、長さを2倍の10秒にするにはcoefが0.7くらいが当てはまりました。
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
また、coef(coefficient)という係数が鍵を握っていそうだというところまではつかめています。
|