質問編集履歴

2

プログラムを見やすいようにする

2023/09/19 23:51

投稿

1113
1113

スコア0

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

実現したいことの追加、試したことの変更

2023/09/19 05:41

投稿

1113
1113

スコア0

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(data, value)
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