|-转 音频处理项目fse
安装好了anaconda软件后,先按国内的镜像源,可以用清华的镜像源,
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
设置好镜像源后,执行下面命令
conda create -n fse python=3.11
直连的用这个命令速度更快
conda create -n fse -c https://conda.anaconda.org/conda-forge --override-channels python=3.11
conda activate fse
pip3 install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu128
说明cu128就是安装的torch torchaudio torchvision对应支持的CUDA版本12.8,如果你的显卡驱动支持CUDA12.8 或更高,你都可以安装cu128,如果你显卡驱动只支持CUDA12.6那就安装
pip3 install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu126
现在测试的是cu128和cu126都可以,cu129安装了后再安装下面的其他扩展,会有些扩展安装不上
所以建议安装 torch torchaudio torchvision的cu128或cu126
pip3 install fastapi speechbrain uvicorn pydantic python-multipart librosa soundfile pydub scipy pillow python-dotenv pytest httpx onnxruntime
pip3 install pydantic_setting (如果pip安装失败尝试用conda安装)
conda install pydantic_setting (如果还是失败,网络先直连然后用conda-forge频道安装)
用这下面个命令
conda install -c https://conda.anaconda.org/conda-forge --override-channels pydantic-settings
为确保datasets和modelscope兼容,请用以下命令安装确定版本
pip install datasets==2.18.0
pip install modelscope==1.11.0
之后设置huggingface的主目录和缓存目录(不设置默认是C盘的,后面重装系统又要重新下载模型)
Win10系统下环境搭建
安装提示:此项目不要安装whisperx
ModelScope 与 numpy 2.x 冲突是官方已知 issue,
在 单一环境 里 无法同时满足 whisperx 与 ModelScope。
最稳妥:把声纹功能放到独立环境或改用 SpeechBrain。
安装好了anaconda软件后,先按国内的镜像源,可以用清华的镜像源,设置好镜像源后,执行下面命令 conda create -n fse python=3.11 直连的用这个命令速度更快 conda create -n fse -c https://conda.anaconda.org/conda-forge --override-channels python=3.11 conda activate fse pip3 install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu128 说明cu128就是安装的torch torchaudio torchvision对应支持的CUDA版本12.8,如果你的显卡驱动支持CUDA12.8 或更高,你都可以安装cu128,如果你显卡驱动只支持CUDA12.6那就安装 pip3 install torch torchaudio torchvision --index-url https://download.pytorch.org/whl/cu126 现在测试的是cu128和cu126都可以,cu129安装了后再安装下面的其他扩展,会有些扩展安装不上 所以建议安装 torch torchaudio torchvision的cu128或cu126 pip3 install fastapi speechbrain uvicorn pydantic python-multipart librosa soundfile pydub scipy pillow python-dotenv pytest httpx datasets pip3 install pydantic_setting (如果pip安装失败尝试用conda安装) conda install pydantic_setting ( 直连的用这个命令 conda install -c https://conda.anaconda.org/conda-forge --override-channels pydantic-settings 之后设置huggingface的主目录和缓存目录(不设置默认是C盘的,后面重装系统又要重新下载模型)
训练代码
import os import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from tqdm import tqdm from app.services.audio_dataset import SpeakerExtractionDataset # 导入数据集类 from app.services.audio_model import SpeakerExtractionCNN1D # 导入模型类 # 参数配置 DATA_DIR = 'data/embeddings' # 数据目录 LABELS_DIR = 'data/labels' # 标签目录 EMBEDDING_DIR = 'data/embeddings' # 嵌入目录 BATCH_SIZE = 16 EPOCHS = 20 LEARNING_RATE = 0.001 MODEL_SAVE_PATH = 'models/speaker_extraction_model.pth' EMBEDDING_DIM = 192 # 根据您的嵌入维度调整 # 设备配置 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"使用设备: {device}") # 创建 Dataset 和 DataLoader dataset = SpeakerExtractionDataset( data_dir=DATA_DIR, labels_dir=LABELS_DIR, embedding_dir=EMBEDDING_DIR, transform=None ) dataloader = DataLoader( dataset, batch_size=BATCH_SIZE, shuffle=True ) # 初始化模型 model = SpeakerExtractionCNN1D(input_dim=1).to(device) # 根据特征维度调整 input_dim # 损失函数和优化器 criterion = nn.MSELoss() # 回归任务,若为分类任务可改为 nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=LEARNING_RATE) # 训练循环 for epoch in range(EPOCHS): model.train() # 设置模型为训练模式 running_loss = 0.0 for features, labels in tqdm(dataloader, desc=f"Epoch {epoch+1}/{EPOCHS}"): features = features.to(device) # 将特征移动到设备 labels = labels.to(device) # 将标签移动到设备 # 前向传播 outputs = model(features) loss = criterion(outputs, labels) # 计算损失 # 反向传播和优化 optimizer.zero_grad() # 清零梯度 loss.backward() # 反向传播 optimizer.step() # 更新参数 running_loss += loss.item() * features.size(0) # 累加损失 # 计算每个 epoch 的平均损失 epoch_loss = running_loss / len(dataloader.dataset) print(f"Epoch {epoch+1}/{EPOCHS}, Loss: {epoch_loss:.4f}") # 保存模型 torch.save(model.state_dict(), MODEL_SAVE_PATH) print(f"模型已保存到 {MODEL_SAVE_PATH}")
. 代码说明
- •数据集与数据加载器: 使用SpeakerExtractionDataset类加载数据,并通过DataLoader进行批处理和打乱。
- •模型初始化: 初始化SpeakerExtractionCNN1D模型,并将其移动到相应的设备(GPU 或 CPU)。
- •损失函数与优化器: 使用均方误差损失(MSE)进行回归任务,您可以根据需要更改为分类任务的损失函数。
- •训练循环: 在每个 epoch 中,遍历数据加载器,进行前向传播、损失计算、反向传播和参数更新。使用tqdm显示训练进度。
- •模型保存: 训练完成后,将模型参数保存到指定路径。
5. 其他注意事项
- •特征与标签: 确保在SpeakerExtractionDataset中正确加载和处理特征与标签。如果使用不同的特征(如嵌入向量),请相应调整模型输入维度。
- •模型选择: 根据您的任务需求(回归或分类),选择合适的模型和损失函数。
- •超参数调整: 根据实验结果调整学习率、批次大小和训练轮数等超参数,以获得更好的模型性能。
通过上述步骤,您可以将audio_dataset.py和audio_model.py整合在一起,并编写train_audio_model.py进行模型训练。这样,您就能够利用反馈机制,训练一个模型来提高目标说话人声音提取的准确性。 ...