Python 学习整理2

音频处理项目fse

PHPer 2025-08-26 23 0 0

安装好了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进行模型训练。这样,您就能够利用反馈机制,训练一个模型来提高目标说话人声音提取的准确性。 ...

立即注册
更新于:2025-08-27 15:03:13
    您需要登录后才可以评论。 立即注册
    相关内容

    音频和视频等知识的整理

    在哪里看音频文件的采样率

    推荐内容

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作

    【车险课堂】什么是无赔款优待系数ncd,你“造”吗?