diff --git a/rtcllm/utils.py b/rtcllm/utils.py deleted file mode 100644 index 6e10648..0000000 --- a/rtcllm/utils.py +++ /dev/null @@ -1,64 +0,0 @@ -import pyaudio -import av -from av import AudioFrame -import numpy as np - -from appPublic.folderUtils import temp_file - -# 录音参数 - -def MonoMircoPhone(): - CHUNK = 1024 - FORMAT = pyaudio.paInt16 - CHANNELS = 1 - RATE = 44100 - RECORD_SECONDS = 10 - - # 初始化PyAudio - p = pyaudio.PyAudio() - - # 打开音频流 - stream = p.open(format=FORMAT, - channels=CHANNELS, - rate=RATE, - input=True, - frames_per_buffer=CHUNK) - - print("开始录音...") - frames = [] - - for _ in range(0, int(RATE / CHUNK * RECORD_SECONDS)): - data = stream.read(CHUNK) - ndarr = np.frombuffer(data, dtype=np.int16) - print(ndarr.shape) - c = ndarr.shape[0] - ndarr.reshape(c,1) - print(ndarr.shape) - - frame = AudioFrame.from_ndarray(ndarr, format='s16', layout='mono') - yield frame - print(f'{type(data)}') - frames.append(data) - - print("录音结束.") - - # 停止并关闭音频流 - stream.stop_stream() - stream.close() - p.terminate() - -def frames_write_wave(frames): - path = temp_file(suffix='.wav') - output_container = av.open(path, 'w') - out_stream = output_container.add_stream('pcm_s16le') - for frame in frames: - for packet in out_stream.encode(frame): - output_container.mux(packet) - for packet in out_stream.encode(None): - output_container.mux(packet) - output_container.close() - return path - -if __name__ == '__main__': - frames = [f for f in MonoMircoPhone()] - frame_write_wave(frames)