19

私はこのコードを持っています:

import numpy as np
import scipy.io.wavfile
import math

rate, data = scipy.io.wavfile.read('xenencounter_23.wav')

data2 = []

for i in range(len(data)):
    data2.append([int(round(math.sin(data[i][0])*3000)), int(round(math.sin(data[i][1])*3000))])

data2 = np.asarray(data2)

print data2

scipy.io.wavfile.write('xenencounter_23sin3.wav',rate,data2)

これは(切り捨てられた):

[[-2524  2728]
 [ -423 -2270]
 [ 2270   423]
 ..., 
 [-2524     0]
 [ 2524 -2728]
 [-2270   838]]

wav ファイルは Windows Media Player で開いて再生されるため、少なくとも適切な形式です。ただし、Audacity で開いて個々のサンプルを見ると、それらはすべて 0 であり、一致してファイルはまったく音を出していません。

私が理解していないのは、上記のnumpy配列がすべて0になる方法です。サンプルの最大値を下回る必要があります (負の場合は上回る必要があります)。

4

3 に答える 3

2

scipy.io.wavfile.write() を使用して wav ファイルを作成する際に、振幅が非常に重要であることがわかりました。振幅 150 の正弦波を作成すると、VLC で再生すると無音のように聞こえます。振幅を 100 にすると歪んだ正弦波のように聞こえ、80 にすると通常のファイルのように聞こえ始めます。

Wave ファイルを作成するときは振幅に注意する必要がありますが、クリッピングまたは消失が始まる前の最大レベルがどの程度かは、現時点では明確ではありません。

于 2014-04-15T23:12:55.003 に答える