Numpy: Wav, чтобы перечислить, а затем снова создает мусор - PullRequest
0 голосов
/ 19 сентября 2018

Я использую Python 3.7 и в настоящее время разрабатываю решение, которое требует, чтобы я преобразовал WAV-файл в массив Numpy, затем в список, затем обратно в массив и, наконец, снова записал в виде WAV-файла.Ранее сегодня он был в состоянии преобразовать, а затем преобразовать без проблем.Однако в настоящее время возвращается WAV-файл, который можно прослушивать, но он полностью статичен.

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

...

rate, data = wavfile.read(os.path.join(F_IN_FOLDER, f))
work = data.tolist()
out = np.array(work, dtype=np.float32)
wavfile.write(os.path.join(F_IN_FOLDER, f), rate, out)

Цель этого кода состоит в том, чтобы в виде спискаЯ могу заставить замолчать части файла WAV, а затем записать поверх исходного файла.У меня нет опыта работы с WAV-файлами, а также с библиотекой Numpy, и, если есть более эффективный способ для этого, я заинтересован в их изучении.

1 Ответ

0 голосов
/ 19 сентября 2018

Я согласен с @NilsWerner - вы должны иметь возможность делать все как массивы и гораздо быстрее, чем работать со списком.Я не уверен, что вы подразумеваете под "тишиной", но на данный момент, если предположить, что это предполагает запись нулей в определенные части массива, вы можете сделать что-то вроде:

# create an array of 1's (my sample test data)
a = np.ones(10)

# zero out a specific range of indices using standard numpy slice notation.
a[5:8] = 0

# check the result
print(a)

и получить обратно

[1. 1. 1. 1. 1. 0. 0. 0. 1. 1.]

ознакомьтесь с документацией numy на кусках numy и соответствующей документацией scipy индексацией scipy .

...