teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

一部修正

2020/11/24 23:28

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -6,8 +6,10 @@
6
6
 
7
7
  追記
8
8
 
9
- 上記修正後に時間幅が異なって見えるのは、wavファイルがステレオであるため、dataの前半が1番目のチャネル、後半が2番目のチャネル、となっているためです。単純修正するには、以下のようにして1番目のチャネルだけ取り出すとよいでしう。
9
+ 上記修正後に時間幅が異なって見えるのは、wavファイルがステレオであるため、dataの前半が1番目のチャネル、後半が2番目のチャネル、となっているためです。dataをもと変換逆変換をして作ったx2、y2グラフは、2つのチャネルを時間軸追記ている形になるため、x1、y1のグラフに対して、倍の時間がかかっているよに見えてしまいます
10
10
 
11
+ 単純に修正するには、x1、y1を計算する前に、以下のようにして1番目のチャネルだけ取り出すとよいでしょう。本来であればチャネルごとに別のグラフにあらわすようにするとよいでしょう。
12
+
11
13
  ```Python
12
14
  data = data[:file.getnframes()]
13
15
  ```

2

間違った回答の修正

2020/11/24 23:28

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -6,9 +6,8 @@
6
6
 
7
7
  追記
8
8
 
9
- 上記修正後に時間幅が異なって見えるのは、x1y1計算間違っているためと思います。y1はstftかけ前のdataそのもの、x1は、duration(録音時間)とdata長さをもと、生成ればよいで
9
+ 上記修正後に時間幅が異なって見えるのは、wavファイルがステレオであるためdata前半1番目のチャネル、後半が2番目のチャネル、となっているためす。単純に修正すは、以下ようして1番目のチャネルだけ取り出よいでしょう
10
10
 
11
11
  ```Python
12
- x1=np.linspace(0, duration, len(data))
12
+ data = data[:file.getnframes()]
13
- y1=data
14
13
  ```

1

補足追記

2020/11/24 23:22

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -2,4 +2,13 @@
2
2
  `stft_i=10*np.log(np.abs(stft_i))`
3
3
  が入っているからではないでしょうか?
4
4
 
5
- 特にlogにより全体的に音量を潰しているため、逆変換が平板な形になっているように思えます。
5
+ 特にlogにより全体的に音量を潰しているため、逆変換が平板な形になっているように思えます。
6
+
7
+ 追記
8
+
9
+ 上記修正後に時間幅が異なって見えるのは、x1、y1の計算が間違っているためと思います。y1はstftかける前のdataそのもの、x1は、duration(録音時間)とdataの長さをもとに、生成すればよいです。
10
+
11
+ ```Python
12
+ x1=np.linspace(0, duration, len(data))
13
+ y1=data
14
+ ```