我創建了一個聲音這樣說:無法編輯我的np.fromstring
import numpy as np
from scipy.io.wavfile import write
data=np.random.uniform(-1,-1,44100)
scaled=np.int8(data/np.max(np.abs(data))*127)
write('test8.wav',44100,scaled)
,我想用np.fromstring轉換振幅:
def tableau_ampli(filename) :
Monson = wave.open(filename,'r')
n = Monson.getnframes()
if Monson.getsampwidth() == 1 :
freq = np.fromstring(Monson.readframes(n),dtype=np.uint8)
print(freq)
for k in range(n):
if freq[k] > int(127) :
freq[k]=freq[k]-249
print(freq)
else :
freq = np.fromstring(Monson.readframes(n),dtype=np.uint16)
for k in range(len(freq)):
if freq[k]>32767 : # 32767 = [(2**16)/2]-1
freq[k]-=65536 # 65536 = 2**16
return(freq)
,但它不工作時我執行tableau_ampli('test8.wav')。 我認爲這個問題是因爲
np.fromstring(Monson.readframes(n),dtype=np.uint8)
回報:[129 129 129 ..., 129 129 129]
,而不是一個數組或一個字符串。 我可以得到一些幫助嗎?
'[129 129 129 ...,129 129 129]'是'uint8'的數組,正如你指定的那樣。 – hpaulj
但爲什麼我不能編輯它?當我在範圍執行 對於k(N): 如果頻率[K]> INT(127): 頻率[K] =頻率[K] -249 打印(頻率) 然而,當我執行它上: array([129,129,129,129,129,129])它的工作:/ –
'tableau_ampli()'的第一行是什麼'wave'?當我嘗試運行這段代碼時,它給了我一個錯誤。 – Antimony