Я делаю приложение ICA, где я пытаюсь отделить сигналы от наблюдения смешанного сигнала. Кажется, это работает теоретически, когда я смотрю на восстановленный сигнал ICA в numpy ndarray, сигнал отчетливо виден. Однако, когда я пытаюсь записать этот ndarray в .wav для воспроизведения, сигнал полностью исчезает. Это можно увидеть на следующем рисунке: Scipy Write Audio Issue
Первый график показывает сигнал ndarray numpy сигнала восстановления ICA. Второй график показывает, где я просто загрузил файл, который предположительно был написан scipy .wav write, так как вы можете видеть, что он молчит.
Такое поведение вызывает недоумение, поскольку ранее я использовал ту же самую процедуру для создания моих наблюдений смешанного сигнала, используя матрицу смешивания (также в том же формате, numpy ndarrays). На следующем рисунке вы заметите, что все происходит точно так же, и все же, по какой-то причине, scipy write .wav работал - второй график подтверждает, что сигнал был загружен из .wav, который был записан с первый график (массив numpy nd).
Я хотел бы знать, что за условный успехом для этого. Я знаю, что плавать и целые числа нужно обрабатывать осторожно, но я уверен, что ничего не забыл.
Картины объясняют это очень хорошо, единственное, что я хотел бы уточнить, что функция play_wav
делает, это в основном просто пишет .wav и создает звуковой объект:
def play_wav(file, fs, data):
wavfile.write(file, fs, data.astype(np.dtype('i2')))
display(Audio(filename=file))
импорт:
import numpy as np
from scipy.io import wavfile
from IPython.display import display, Audio
from sklearn.decomposition import FastICA
Вы не показать функцию 'load_wav'. Это поможет, если вы сможете предоставить [MVCE] (http://stackoverflow.com/help/mcve), которые мы могли бы скопировать и запустить, чтобы воссоздать проблему. –
Справедливая точка, вот репозиторий со всем моим ноутбуком jupyter. Скорость загрузки на данный момент низкая, только 1 .wav, который я использовал по этой ссылке. Я попытаюсь обновить его в ближайшее время, включив в него все 3 WAV. Вы можете использовать свои собственные .wavs, если хотите. Конечно, если вы просто хотели видеть внутреннюю работу вещей, вы можете просто просмотреть файл ipynb для ноутбука. Вот он: https://github.com/diggetybo/ICA-Attachments –
Хорошо, все 3 .wavs есть сейчас. Если кто-то хочет 100% повторно создать мою процедуру, это было бы возможно сейчас. Поместите .wavs в каталог ноутбуков jupyter. –