我正在使用声卡库来记录我的麦克风输入,它记录在一个numpy数组中,我想抓住那个音频并将其保存为mp3文件。
代码:
import soundcard as sc
import numpy
import threading
speakers = sc.all_speakers() # Gets a list of the systems speakers
default_speaker = sc.default_speaker() # Gets the default speaker
mics = sc.all_microphones() # Gets a list of all the microphones
default_mic = sc.get_microphone('Headset Microphone (Arctis 7 Chat)') # Gets the default microphone
# Records the default microphone
def record_mic():
print('Recording...')
with default_mic.recorder(samplerate=48000) as mic, default_speaker.player(samplerate=48000) as sp:
for _ in range(1000000000000):
data = mic.record(numframes=None) # 'None' creates zero latency
sp.play(data)
# Save the mp3 file here
recordThread = threading.Thread(target=record_mic)
recordThread.start()
2条答案
按热度按时间sd2nnvve1#
带Scipy(到wav文件)
您可以轻松地转换为wav,然后单独将wav转换为mp3。更多详情here。
带pydub(到mp3)
从这个优秀的thread尝试这个函数-
注:输出MP3必然是16位的,因为MP3总是16位的。但是,您可以按照@Arty的建议将
sample_width=3
设置为24位输入。wfauudbj2#
截至目前,公认的答案产生极其扭曲的声音,至少在我的情况下,所以这里是改进的版本:
所以你从任何库中读取音频文件,你有一个波形,然后你可以用下面的代码将其导出到任何pydub支持的编解码器,我还使用了librosa读取波形,它工作得很完美。