feat: 增加了音频输入选项,并优化了字幕引擎的构建和运行流程。

- 新增了系统音频输入(麦克风)的选择功能
- 重构了字幕引擎的构建流程,使用 PyInstaller 打包为可执行文件
- 优化了字幕引擎的启动和停止逻辑
- 更新了用户界面,增加了音频选择的控制选项
- 修改了相关的文件路径和构建配置
This commit is contained in:
himeditator
2025-06-21 23:22:19 +08:00
parent 7030aaaae3
commit 42237a229c
15 changed files with 268 additions and 63 deletions

View File

@@ -61,28 +61,39 @@ def mergeStreamChannels(data, channels):
mono_data_bytes = mono_data.tobytes()
return mono_data_bytes
class LoopbackStream:
def __init__(self):
class AudioStream:
"""
获取系统音频流
参数:
audio_type: 默认0-系统音频输出流1-系统音频输入流
"""
def __init__(self, audio_type=0):
self.audio_type = audio_type
self.mic = pyaudio.PyAudio()
self.loopback = getDefaultLoopbackDevice(self.mic, False)
if self.audio_type == 0:
self.device = getDefaultLoopbackDevice(self.mic, False)
else:
self.device = self.mic.get_default_input_device_info()
self.stream = None
self.SAMP_WIDTH = pyaudio.get_sample_size(pyaudio.paInt16)
self.FORMAT = pyaudio.paInt16
self.CHANNELS = self.loopback["maxInputChannels"]
self.RATE = int(self.loopback["defaultSampleRate"])
self.CHANNELS = self.device["maxInputChannels"]
self.RATE = int(self.device["defaultSampleRate"])
self.CHUNK = self.RATE // 20
self.INDEX = self.loopback["index"]
self.INDEX = self.device["index"]
def printInfo(self):
dev_info = f"""
采样输入设备:
- 序号{self.loopback['index']}
- 名称{self.loopback['name']}
- 最大输入通道数{self.loopback['maxInputChannels']}
- 默认低输入延迟{self.loopback['defaultLowInputLatency']}s
- 默认输入延迟:{self.loopback['defaultHighInputLatency']}s
- 默认采样率{self.loopback['defaultSampleRate']}Hz
- 是否回环设备{self.loopback['isLoopbackDevice']}
采样设备:
- 设备类型{ "音频输入" if self.audio_type == 0 else "音频输出" }
- 序号{self.device['index']}
- 名称{self.device['name']}
- 最大输入通道数{self.device['maxInputChannels']}
- 默认输入延迟:{self.device['defaultLowInputLatency']}s
- 默认高输入延迟{self.device['defaultHighInputLatency']}s
- 默认采样率{self.device['defaultSampleRate']}Hz
- 是否回环设备:{self.device['isLoopbackDevice']}
音频样本块大小:{self.CHUNK}
样本位宽:{self.SAMP_WIDTH}