gpt4 book ai didi

python - 使用 librosa 隔离音频前景并转换回音频流

转载 作者:行者123 更新时间:2023-12-03 00:26:01 25 4
gpt4 key购买 nike

我正在尝试隔离音频流的前景,然后使用 librosa 将其保存为独立的音频流。

从这个看似开始relevant example .

我有完整的前景和背景数据,就像 S_full 中的例子一样。 , S_foregroundS_background但我不确定如何将它们用作音频。

我试图使用 librosa.istft(...)转换它们,然后将其另存为 .wav文件使用 soundfile.write(...)但我留下了一个大小合适但无法使用(?)数据的文件。

任何人都可以描述或指出我的例子吗?

谢谢。

最佳答案

把最小的例子放在一起,
具有原始采样率的 istft() 实际上确实有效。

我会在某处找到我的错误。
FWIW 这是工作代码

import numpy as np
import librosa
from librosa import display
import soundfile
import matplotlib.pyplot as plt

y, sr = librosa.load('audio/rb-testspeech.mp3', duration=5)
S_full, phase = librosa.magphase(librosa.stft(y))

S_filter = librosa.decompose.nn_filter(S_full,
aggregate=np.median,
metric='cosine',
width=int(librosa.time_to_frames(2, sr=sr)))
S_filter = np.minimum(S_full, S_filter)

margin_i, margin_v = 2, 10
power = 2

mask_v = librosa.util.softmask(S_full - S_filter,
margin_v * S_filter,
power=power)

S_foreground = mask_v * S_full

full = librosa.amplitude_to_db(S_full, ref=np.max)
librosa.display.specshow(full, y_axis='log', sr=sr)

plt.title('Full spectrum')
plt.colorbar()

plt.tight_layout()
plt.show()

print("y({}): {}".format(len(y),y))
print("sr: {}".format(sr))

full_audio = librosa.istft(S_full)
foreground_audio = librosa.istft(S_foreground)
print("full({}): {}".format(len(full_audio), full_audio))

soundfile.write('orig.WAV', y, sr)
soundfile.write('full.WAV', full_audio, sr)
soundfile.write('foreground.WAV', foreground_audio, sr)

关于python - 使用 librosa 隔离音频前景并转换回音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com