에서 오디오 파일을 재구성, 나는 오디오 파일의 stft을 계산하려면 :파이썬 : 간단한 실험으로 STFT
sample_rate, samples = wav.read(file)
f, t, Zxx = stft(samples, sample_rate)
_, reconstructed = istft(Zxx, sample_rate)
padded_samples = np.zeros_like(reconstructed)
padded_samples[:len(samples)] = samples
print (np.sum(padded_samples - reconstructed))
출력 : -1.37309940428
은. 꽤 작지 않아? samples
은 모양이 (9218368,)
인 것을 감안할 때.
test_file = os.path.join(temp_folder, 'reconstructed.wav')
wav.write(test_file, sample_rate, reconstructed)
재구성 된 파일은 끔찍한 소리를냅니다. 원본은 간략하게 소리 아래에서들을 수 있습니다. 실수를했거나 단순히 STFT에서 오디오 파일을 복구하는 것이 불가능합니까?
오디오 파일을 어떤 종류의 처리 가능한 데이터로 변환 한 다음이를 다시 구성하는 방법에 대한 다른 제안이 있습니까? 오디오 파일을 처리하는 데 사용할 수있는 다른 종류의 데이터 구조는 무엇입니까?
감사합니다.
편집 :
워렌에 의해 제안 :
print (samples.shape)
print (samples.dtype)
print (reconstructed.dtype)
출력 : WAV 파일을 기록 할 때
(9218368,)
int16
float64
은 scipy 문서에 따르면 int로 입력을 떠 다른 의미를 가지고 . 나는 np.int16으로 재구성 된 캐스팅 시도 :
rounded_reconstructed = np.rint(reconstructed).astype(np.int16)
test_file = os.path.join(temp_folder, 'reconstructed.wav')
wav.write(test_file, sample_rate, rounded_reconstructed)
결과는 원본과 거의 구분됩니다. 도와 주셔서 감사합니다.
다음을 알려주십시오 :'samples.shape','samples.dtype','reconstructed.dtype'. –