質問編集履歴
2
プログラムを見やすいようにする
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
ここに実現したいことを箇条書きで書いてください。
|
4
4
|
- [ ] fft = fftpack.fft()でフーリエ変換したデータを
|
5
|
+
|
6
|
+
```python
|
5
7
|
def idx_of_the_nearest(x, y):
|
6
8
|
idx = np.argmin(np.abs(np.array(x) - y))
|
7
9
|
return idx
|
@@ -9,11 +11,13 @@
|
|
9
11
|
x = [1, 1 ,1 ,0.5 ,2 ,3 ,-1]
|
10
12
|
y = 0.8
|
11
13
|
n = idx_of_the_nearest(x, y)
|
12
|
-
|
14
|
+
```
|
13
15
|
みたいなかんじなプログラムで特定の周波数だけの音声データになるように編集したいのですが、フーリエ変換して得たデータの数値一つ一つ取り上げて編集する方法がわかりません
|
14
16
|
元のプログラムではfor f in range(0, int(len(fft)/2)):を使っていたのですが、shift_frequencyをどう代用すればスケール変換ができるかわかりませんでした
|
15
17
|
|
16
18
|
元のプログラムは
|
19
|
+
|
20
|
+
```python
|
17
21
|
shift_frequency = 1500 # シフトさせる周波数(Hz)
|
18
22
|
shift = int(shift_frequency*len(fft)/FrameRate) #周波数→データインデックスにスケール変換
|
19
23
|
for f in range(0, int(len(fft)/2)):
|
@@ -24,7 +28,8 @@
|
|
24
28
|
fft[f] = 0
|
25
29
|
fft[-1*f] = 0
|
26
30
|
fft_amp = np.abs(fft / (N / 2))
|
31
|
+
```
|
27
|
-
でデータ内の音の周波数を1500Hz高くするプログラムです
|
32
|
+
でデータ内の音の周波数を1500Hz高くなるよう編集するプログラムです
|
28
33
|
### 前提
|
29
34
|
|
30
35
|
google colabでプログラミングしています
|
@@ -32,7 +37,7 @@
|
|
32
37
|
### 該当のソースコード
|
33
38
|
|
34
39
|
|
35
|
-
```
|
40
|
+
```python
|
36
41
|
# 音声編集ソースコード
|
37
42
|
|
38
43
|
# 必要なモジュールをインポート
|
@@ -90,14 +95,16 @@
|
|
90
95
|
|
91
96
|
知識不足で、試せたことがありません
|
92
97
|
|
98
|
+
```python
|
93
99
|
def idx_of_the_nearest(x, y):
|
94
100
|
idx = np.argmin(np.abs(np.array(x) - y))
|
95
101
|
return idx
|
96
102
|
|
97
103
|
for f in range(0, int(len(fft)/2)):
|
98
|
-
x = []
|
104
|
+
x = [#数値を入れる]
|
99
105
|
y =
|
100
|
-
n = idx_of_the_nearest(x, y)
|
106
|
+
n = idx_of_the_nearest(x, y)
|
107
|
+
```
|
101
108
|
でフーリエ変換したデータの周波数をyに代入して編集したいのですがどう代入すればいいのかわかりませんでした
|
102
109
|
|
103
110
|
### 補足情報(FW/ツールのバージョンなど)
|
1
実現したいことの追加、試したことの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,10 +8,23 @@
|
|
8
8
|
|
9
9
|
x = [1, 1 ,1 ,0.5 ,2 ,3 ,-1]
|
10
10
|
y = 0.8
|
11
|
-
n = idx_of_the_nearest(
|
11
|
+
n = idx_of_the_nearest(x, y)
|
12
12
|
|
13
|
-
みたいなかんじなプログラムで特定の周波数だけの音声データになるように編集したいのですが、フーリエ変換して得たデータ
|
13
|
+
みたいなかんじなプログラムで特定の周波数だけの音声データになるように編集したいのですが、フーリエ変換して得たデータの数値一つ一つ取り上げて編集する方法がわかりません
|
14
|
+
元のプログラムではfor f in range(0, int(len(fft)/2)):を使っていたのですが、shift_frequencyをどう代用すればスケール変換ができるかわかりませんでした
|
14
15
|
|
16
|
+
元のプログラムは
|
17
|
+
shift_frequency = 1500 # シフトさせる周波数(Hz)
|
18
|
+
shift = int(shift_frequency*len(fft)/FrameRate) #周波数→データインデックスにスケール変換
|
19
|
+
for f in range(0, int(len(fft)/2)):
|
20
|
+
if( (f+shift > 0) and (f+shift < int(len(fft)/2)) ):
|
21
|
+
fft[f] = fft_original[f+shift]
|
22
|
+
fft[-1*f] = fft_original[-1*f-shift]
|
23
|
+
else:
|
24
|
+
fft[f] = 0
|
25
|
+
fft[-1*f] = 0
|
26
|
+
fft_amp = np.abs(fft / (N / 2))
|
27
|
+
でデータ内の音の周波数を1500Hz高くするプログラムです
|
15
28
|
### 前提
|
16
29
|
|
17
30
|
google colabでプログラミングしています
|
@@ -75,7 +88,17 @@
|
|
75
88
|
ここから編集をするつもりです
|
76
89
|
### 試したこと
|
77
90
|
|
78
|
-
と
|
91
|
+
知識不足で、試せたことがありません
|
92
|
+
|
93
|
+
def idx_of_the_nearest(x, y):
|
94
|
+
idx = np.argmin(np.abs(np.array(x) - y))
|
95
|
+
return idx
|
96
|
+
|
97
|
+
for f in range(0, int(len(fft)/2)):
|
98
|
+
x = []
|
99
|
+
y =
|
100
|
+
n = idx_of_the_nearest(x, y)
|
101
|
+
でフーリエ変換したデータの周波数をyに代入して編集したいのですがどう代入すればいいのかわかりませんでした
|
79
102
|
|
80
103
|
### 補足情報(FW/ツールのバージョンなど)
|
81
104
|
|