tôi có mã này:Viết file wav bằng Python với wavfile.write từ scipy
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)
in này (cắt ngắn):
[[-2524 2728]
[ -423 -2270]
[ 2270 423]
...,
[-2524 0]
[ 2524 -2728]
[-2270 838]]
Các tập tin wav mở và đóng trong Windows Media Player, ít nhất là định dạng thích hợp của nó. Tuy nhiên, khi mở nó bằng Audacity và nhìn vào từng mẫu riêng lẻ, tất cả chúng đều là 0, và ngay lập tức tập tin không phát ra âm thanh nào cả.
Điều tôi không hiểu là cách mảng numpy được liệt kê ở trên trở thành tất cả 0. Nó phải dưới giá trị tối đa cho một mẫu (hoặc cao hơn, nếu nó âm).
điều gì sẽ xảy ra nếu bạn tải lại bằng scipy? là 0 hoặc giá trị bạn đã lưu? –
Nó trả về cùng một thứ như nó được in trước khi viết. – JVE999
Bạn có thể thêm câu lệnh 'print data' sau dòng' rate, data = scipy.io.wavfile.read ('xenencounter_23.wav') '. Tôi muốn xem dữ liệu đó trông như thế nào. –