在开始构建档案录音与转写系统之前,必须先配置好运行环境。本系统基于Python开发,利用OpenAI的Whisper模型进行语音识别,因此需要确保Python版本和依赖库的准确性。
1. 安装Python环境
请确保系统已安装 Python 3.9 或更高版本。在终端中运行以下命令检查版本:
```bash python --version ```2. 安装FFmpeg音频处理库
Whisper模型依赖FFmpeg来处理音频格式。这是最容易卡壳的环节,请根据操作系统严格执行以下命令:
3. 创建项目并安装Python依赖
在本地创建一个名为 archive_system 的文件夹,进入该目录并创建虚拟环境:
```bash mkdir archive_system cd archive_system python -m venv venv ```激活虚拟环境并安装核心依赖包。请直接复制以下命令执行:
```bash Windows激活 venv\Scripts\activate Linux/Mac激活 source venv/bin/activate pip install openai-whisper sounddevice scipy numpy torch ```为了方便后续调整录音参数和模型选择,我们采用JSON配置文件来管理系统设置。在项目根目录下创建一个名为 config.json 的文件,并完整复制以下内容:
```json { "audio": { "sample_rate": 44100, "channels": 1, "duration": 10, "filename": "recording.wav" }, "transcription": { "model": "base", "language": "zh", "output_format": "text" }, "archive": { "audio_dir": "archives/audio", "text_dir": "archives/text" } } ```配置参数详解:

录音功能是系统的入口。我们将使用 sounddevice 库进行实时音频采集,并使用 scipy 进行WAV格式保存。创建文件 recorder.py,代码如下:
```python import sounddevice as sd from scipy.io.wavfile import write import json import os def load_config(): with open('config.json', 'r', encoding='utf-8') as f: return json.load(f) def record_audio(): config = load_config() audio_cfg = config['audio'] fs = audio_cfg['sample_rate'] seconds = audio_cfg['duration'] filename = audio_cfg['filename'] channels = audio_cfg['channels'] print(f"正在录音... 时长: {seconds}秒") 录音核心逻辑 myrecording = sd.rec(int(seconds fs), samplerate=fs, channels=channels) sd.wait() 等待录音结束 print("录音完成,正在保存文件...") write(filename, fs, myrecording) print(f"文件已保存为: {filename}") return filename if __name__ == "__main__": record_audio() ```这段代码会读取配置文件中的时长参数,调用麦克风进行录音,并直接保存为WAV文件。注意 sd.wait() 是必须的,否则程序会在录音结束前退出。
原始录音往往包含底噪,直接转写会影响准确率。虽然Whisper具有一定的抗噪能力,但输入标准化的音频能提升效果。我们增加一个简单的预处理步骤,确保音频是单声道且格式正确。创建文件 processor.py:
```python from pydub import AudioSegment import os def normalize_audio(input_path): print("正在执行音频预处理...") try: 加载音频 sound = AudioSegment.from_wav(input_path) 转换为单声道 sound = sound.set_channels(1) 标准化音量 (防止过小或爆音) sound = sound.normalize() 重新导出覆盖原文件 sound.export(input_path, format="wav") print("音频预处理完成: 已转为单声道并标准化音量。") return True except Exception as e: print(f"预处理失败: {e}") return False ```你需要额外安装 pydub 库:
```bash pip install pydub ```这是系统的核心“大脑”。我们将加载Whisper模型,对处理后的音频进行转写。创建文件 transcriber.py:
```python import whisper import json def load_config(): with open('config.json', 'r', encoding='utf-8') as f: return json.load(f) def transcribe_audio(audio_path): config = load_config() model_name = config['transcription']['model'] language = config['transcription']['language'] print(f"正在加载 Whisper 模型: {model_name} ...") 加载模型,会自动下载到本地缓存 model = whisper.load_model(model_name) print("正在进行智能转写...") 执行转写 result = model.transcribe(audio_path, language=language) text_content = result["text"] print("转写结果预览:") print(text_content) return text_content ```为了体现“档案”属性,我们需要按日期自动分类存储音频和文本文件。创建文件 archiver.py:
```python import os import shutil from datetime import datetime import json def load_config(): with open('config.json', 'r', encoding='utf-8') as f: return json.load(f) def archive_files(audio_filename, text_content): config = load_config() archive_cfg = config['archive'] 获取当前日期作为文件夹名 date_str = datetime.now().strftime("%Y-%m-%d") timestamp = datetime.now().strftime("%H-%M-%S") 构建完整路径 audio_base_dir = archive_cfg['audio_dir'] text_base_dir = archive_cfg['text_dir'] audio_final_dir = os.path.join(audio_base_dir, date_str) text_final_dir = os.path.join(text_base_dir, date_str) 创建目录 os.makedirs(audio_final_dir, exist_ok=True) os.makedirs(text_final_dir, exist_ok=True) 移动并重命名音频文件 audio_ext = os.path.splitext(audio_filename)[1] new_audio_name = f"{timestamp}{audio_ext}" dest_audio_path = os.path.join(audio_final_dir, new_audio_name) shutil.move(audio_filename, dest_audio_path) 保存文本档案 text_filename = f"{timestamp}.txt" dest_text_path = os.path.join(text_final_dir, text_filename) with open(dest_text_path, 'w', encoding='utf-8') as f: f.write(text_content) print(f"归档完成:") print(f"音频路径: {dest_audio_path}") print(f"文本路径: {dest_text_path}") ```我们将上述模块串联起来,形成一个完整的自动化工作流。创建主程序入口文件 main.py:
```python import recorder import processor import transcriber import archiver def main(): print("=== 档案录音与智能转写系统启动 ===") 1. 录音 audio_file = recorder.record_audio() 2. 预处理 if processor.normalize_audio(audio_file): 3. 转写 text_result = transcriber.transcribe_audio(audio_file) 4. 归档 if text_result: archiver.archive_files(audio_file, text_result) else: print("转写失败,跳过归档。") else: print("音频处理失败,终止流程。") print("=== 流程结束 ===") if __name__ == "__main__": main() ```所有代码已就绪,现在可以运行系统进行验收。确保终端仍处于虚拟环境中,执行以下命令:
```bash python main.py ```预期操作流程:
通过以上步骤,你已成功从零搭建了一套具备录音、降噪、AI转写及自动化归档功能的完整技术系统,所有数据均在本地处理,安全且可控。