32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import os
|
||
|
||
import soundcard
|
||
import soundfile
|
||
|
||
|
||
class RecordAudio:
|
||
def __init__(self, channels=1, sample_rate=16000):
|
||
# 录音参数
|
||
self.channels = channels
|
||
self.sample_rate = sample_rate
|
||
|
||
# 获取麦克风
|
||
self.default_mic = soundcard.default_microphone()
|
||
|
||
def record(self, record_seconds=3, save_path=None):
|
||
"""录音
|
||
|
||
:param record_seconds: 录音时间,默认3秒
|
||
:param save_path: 录音保存的路径,后缀名为wav
|
||
:return: 音频的numpy数据
|
||
"""
|
||
print("开始录音......")
|
||
num_frames = int(record_seconds * self.sample_rate)
|
||
data = self.default_mic.record(samplerate=self.sample_rate, numframes=num_frames, channels=self.channels)
|
||
audio_data = data.squeeze()
|
||
print("录音已结束!")
|
||
if save_path is not None:
|
||
os.makedirs(os.path.dirname(save_path), exist_ok=True)
|
||
soundfile.write(save_path, data=data, samplerate=self.sample_rate)
|
||
return audio_data
|