import librosa\nimport numpy as np\n\n# 读取音频文件\naudio_file = 'in/file.mp3'\ny, sr = librosa.load(audio_file)\n\n# 提取音频的短时傅里叶变换(STFT)\nD = librosa.stft(y)\n\n# 计算音频的能量谱\npower_spec = np.abs(D)**2\n\n# 选择一个适当的阈值进行二值化\nthreshold = np.max(power_spec) * 0.5\nbinary_mask = (power_spec > threshold)\n\n# 将原始STFT乘以二值掩码得到分离后的STFT\nmasked_stft = binary_mask * D\n\n# 使用反傅里叶变换将分离后的STFT转换为时域信号\ny_vocal = librosa.istft(masked_stft)\n\n# 可选:保存分离出的人声音频\noutput_vocal_file = 'out/file.wav'\nlibrosa.output.write_wav(output_vocal_file, y_vocal, sr)


原文地址: https://www.cveoy.top/t/topic/pKJq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录