第2章:环境搭建——TensorFlow 2.x安装、CUDA/cuDNN配置、Librosa与SoundFile音频处理库安装、数据集准备
说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多同学,代码写得挺溜,结果卡在装环境这一步,一卡就是两三天。所以这一章,咱们把每一步都走踏实了。
2.1 TensorFlow 2.x 安装——选对版本很重要
TensorFlow 2.x 目前主流是 2.10 到 2.15 这个区间。我个人习惯用 2.12 或 2.13,稳定,生态也好。
安装命令很简单:
pip install tensorflow==2.13.0
但这里有个坑——千万别直接 pip install tensorflow。为啥?因为默认会装最新版,而最新版可能跟你的 CUDA 版本不匹配。我曾经有一次图省事,直接装了最新版,结果跑模型时疯狂报错,查了半天才发现是 CUDA 版本不对。
pip install tensorflow-macos==2.13.0
这个坑我踩过,当时折腾了一下午。
2.2 CUDA/cuDNN 配置——GPU加速的关键
做语音识别,数据量大,模型复杂,没有 GPU 加速,训练一次可能要等好几天。所以 CUDA 和 cuDNN 的配置,是重中之重。
先确认你的显卡支持 CUDA:
- NVIDIA 显卡:GTX 10系列以上基本都支持
- AMD 显卡:目前 TensorFlow 官方不支持,得用 ROCm
- 集成显卡:别想了,老老实实用 CPU 吧
CUDA 和 cuDNN 的版本匹配表:
| TensorFlow 版本 | CUDA 版本 | cuDNN 版本 |
|---|---|---|
| 2.10.x | 11.2 | 8.1 |
| 2.12.x | 11.8 | 8.6 |
| 2.13.x | 11.8 | 8.6 |
| 2.14.x | 12.2 | 8.9 |
安装步骤:
- 去 NVIDIA 官网下载对应版本的 CUDA Toolkit
- 安装时选择「自定义安装」,只勾选 CUDA 组件
- 下载 cuDNN,解压后把文件复制到 CUDA 安装目录
- 配置环境变量(PATH 里加上 CUDA 的 bin 和 libnvvp 目录)
nvcc --version 检查版本。如果显示正常,再跑一下 nvidia-smi 看看驱动状态。两个都对了,再装 cuDNN。
验证 GPU 是否可用:
import tensorflow as tf
print("GPU可用:", tf.config.list_physical_devices('GPU'))
如果输出是空列表,别慌。先检查驱动,再检查版本匹配。我遇到过最奇葩的一次,是装了 CUDA 但忘了重启电脑……
2.3 Librosa 与 SoundFile 安装——音频处理的左膀右臂
做语音识别,Librosa 是绕不开的库。它封装了音频读取、特征提取、时频变换等常用功能。SoundFile 则是一个轻量级的音频读写库,支持多种格式。
安装命令:
pip install librosa soundfile
Librosa 依赖比较多,安装时可能会报错。最常见的是 llvmlite 或 numba 版本冲突。解决办法是:
pip install --upgrade numba llvmlite
pip install librosa --no-deps
pip install soundfile
sr=None 参数。我刚开始做项目时没注意这个,结果特征提取全错了,白跑了两天实验。
测试安装是否成功:
import librosa
import soundfile as sf
# 读取音频
audio, sr = librosa.load('test.wav', sr=None)
print(f"采样率: {sr}, 时长: {len(audio)/sr:.2f}秒")
# 写入音频
sf.write('output.wav', audio, sr)
2.4 数据集准备——从哪找数据?怎么处理?
语音识别领域,数据集就是命根子。没有好的数据,模型再牛也白搭。
常用中文语音数据集:
- THCHS-30:清华大学的免费中文数据集,1万条语音,适合入门
- AISHELL-1:178小时中文语音,质量很高,但需要申请
- Free ST Chinese Mandarin Corpus:免费,约10小时,适合小项目
- Common Voice (中文部分):Mozilla 开源项目,众包采集,质量参差不齐
数据集处理流程:
- 下载解压:注意文件格式,常见的是 WAV 或 FLAC
- 检查采样率:统一到 16kHz 或 22.05kHz
- 去除静音段:用 Librosa 的
effects.split方法 - 生成标注文件:CSV 或 JSON 格式,包含音频路径和对应文本
- 划分数据集:训练集 80%、验证集 10%、测试集 10%
import librosa
import os
def check_audio(file_path):
try:
audio, sr = librosa.load(file_path, sr=None)
return True
except:
return False
# 遍历所有音频文件
for file in os.listdir('audio_folder'):
if not check_audio(file):
print(f"损坏文件: {file}")
数据增强(可选但推荐):
如果你数据量不够,可以做些简单的增强:
- 加噪声:从噪声库中随机叠加一段背景音
- 变速:把音频速度调快或调慢 10%
- 变调:改变音高,模拟不同说话人
2.5 环境验证——跑通第一个语音识别 Demo
所有东西装好后,咱们跑个简单的 Demo 验证一下:
import tensorflow as tf
import librosa
import numpy as np
# 1. 检查 GPU
print("GPU:", tf.config.list_physical_devices('GPU'))
# 2. 读取音频
audio, sr = librosa.load('test.wav', sr=16000)
# 3. 提取 MFCC 特征
mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=13)
print(f"MFCC 形状: {mfcc.shape}")
# 4. 构建一个简单的模型
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(mfcc.shape[0], mfcc.shape[1])),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.summary()
print("✅ 环境搭建成功!")
如果这段代码能顺利跑完,恭喜你,环境搭建完成了!
嗯,说实话,环境搭建这一步确实繁琐,但磨刀不误砍柴工。后面咱们写代码、跑模型的时候,你就会感谢今天花时间把环境配好了。下一章,咱们正式开始讲语音信号处理的基础知识。