尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【中小学AI人工智能教育】声音分类——提琴分类:快速定义项目类型实例

【中小学AI人工智能教育】声音分类——提琴分类:快速定义项目类型实例
📅 发布时间:2026/7/4 3:46:50

Ai创想实验室是专门为中小学AI教育开发的教学平台,包含了值计算、图像分类、音频分类、文本分类、数值回归、图像回归、图像分类+回归、平衡杆、手写数字生成、文本生成等中小学人工智能学习类项目。无需编程基础、无需添加硬件、无需购买算力、无隐私担忧、无需师资培训即可进行教学实践。

在Ai创想实验室中,可以使用后台管理功能快速定义已有项目类型的实例。之前,我们介绍了如何使用0-9音频数据集来进行音频分类实验;现在,我们介绍如何在后台构建一个类型相同而数据不同的实例以实现“个性化”实验教学。

一、构建新项目实例

进入管理后台→项目管理选项卡→点击“新建项目”,填写必填内容,而后点击“创建项目”:

这样就得到了一个新的项目,在前台可以看到该项目。在后台项目管理页中,点击该项目的“编辑”按钮,进入编辑界面,在这里我们可以更改相关信息:

当我们完成示例数据构建之后,也从该页面上传数据。修改后,点击“保存更改”即可。

可见,如果不制作示例数据,只需不到一分钟就可以创建一个项目实例。一般来说,在教学中我们会跑完整个流程再回来上传示例数据,上传过程也不会超过一分钟。

二、在管理页面构建示例数据

和在项目页面相同,在后台项目管理中点击该项目后的“项目工具”按钮打开工具页面,该页面和项目页面底部的工具完全一致。

对于音频分类模型,通常我们先对数据进行清洗——因为我们需要知道梅尔谱图的大小来确定模型输入参数。当然,对于普通数据来说,使用界面上的默认设置完全可行,即:使用none,64,59,1这样的参数——批次大小由训练器决定,图像宽度为64,高度为59,单通道:

而后,我们需要获取数据并进行清洗。如果你使用相同的方法,那么搜索TinySOL数据集并下载,而后用以下脚本进行清洗即可(脚本重建了文件夹并汉化,提取声音较强的ff数据):

import os import shutil from pathlib import Path # 乐器英文名到中文名的映射表(完整版) INSTRUMENT_MAP = { # === 弦乐器 (Strings) === 'Violin': '小提琴', 'Viola': '中提琴', 'Violoncello': '大提琴', 'Contrabass': '低音提琴', 'DoubleBass': '低音提琴', 'Guitar': '吉他', 'Harp': '竖琴', 'Mandolin': '曼陀林', 'Banjo': '班卓琴', 'Ukulele': '尤克里里', # === 木管乐器 (Winds) === 'Flute': '长笛', 'Piccolo': '短笛', 'Oboe': '双簧管', 'EnglishHorn': '英国管', 'Clarinet': '单簧管', 'Clarinet_Bb': '降B调单簧管', 'BassClarinet': '低音单簧管', 'Saxophone': '萨克斯', 'Sax_Alto': '中音萨克斯', 'Sax_Tenor': '次中音萨克斯', 'Sax_Baritone': '上低音萨克斯', 'Sax_Soprano': '高音萨克斯', 'Bassoon': '巴松管', 'Recorder': '竖笛', # === 铜管乐器 (Brass) === 'Trumpet': '小号', 'Trumpet_C': 'C调小号', 'Cornet': '短号', 'FrenchHorn': '圆号', 'Horn': '圆号', 'Trombone': '长号', 'BassTrombone': '低音长号', 'Tuba': '大号', 'Bass_Tuba': '低音大号', 'Euphonium': '上低音号', 'BaritoneHorn': '中音号', # === 打击乐器 (Percussion) === 'Percussion': '打击乐', 'Timpani': '定音鼓', 'Xylophone': '木琴', 'Marimba': '马林巴', 'Vibraphone': '颤音琴', 'Glockenspiel': '钟琴', 'Chimes': '管钟', 'Cymbal': '钹', 'Gong': '锣', 'Drum': '鼓', 'SnareDrum': '小军鼓', 'BassDrum': '大鼓', 'TomTom': '通通鼓', 'Bongo': '邦戈鼓', 'Conga': '康加鼓', 'Tambourine': '铃鼓', 'Triangle': '三角铁', 'Castanets': '响板', # === 键盘乐器 (Keyboards) === 'Piano': '钢琴', 'Harpsichord': '羽管键琴', 'Organ': '管风琴', 'Accordion': '手风琴', 'Celesta': '钢片琴', 'Synthesizer': '合成器', 'ElectricPiano': '电钢琴', 'Clavichord': '翼琴', # === 人声 === 'Voice': '人声', 'Soprano': '女高音', 'Alto': '女低音', 'Tenor': '男高音', 'Bass': '男低音', 'Choir': '合唱团', # === 中国乐器 === 'Erhu': '二胡', 'Pipa': '琵琶', 'Guzheng': '古筝', 'Dizi': '笛子', 'Xiao': '萧', 'Sheng': '笙', 'Suona': '唢呐', 'Yangqin': '扬琴', 'Ruan': '阮', 'Liuqin': '柳琴', # === 其他 === 'Guitar': '吉他', 'ElectricGuitar': '电吉他', 'BassGuitar': '贝斯吉他', 'Banjo': '班卓琴', 'Mandolin': '曼陀林', } # 文件夹级别名映射(用于非乐器名但需要翻译的文件夹) FOLDER_MAP = { 'Strings': '弦乐器', 'Winds': '木管乐器', 'Brass': '铜管乐器', 'Keyboards': '键盘乐器', 'Percussion': '打击乐器', 'Voice': '人声', 'Chinese': '中国乐器', 'Plucked': '弹拨乐器', 'Bowed': '弓弦乐器', } def get_chinese_name(path_parts): """ 根据路径部分转换为中文名称 返回转换后的路径列表 """ chinese_parts = [] for part in path_parts: # 1. 先检查是否在文件夹映射中(如 Strings -> 弦乐器) if part in FOLDER_MAP: chinese_parts.append(FOLDER_MAP[part]) # 2. 再检查是否在乐器映射中 elif part in INSTRUMENT_MAP: chinese_parts.append(INSTRUMENT_MAP[part]) else: # 不在映射表中的保留原名 chinese_parts.append(part) return chinese_parts def copy_ff_files_with_chinese(source_dir, target_dir): """ 复制所有包含-ff-的wav文件到目标目录,并将文件夹名转换为中文 """ # 支持的音频格式 audio_extensions = {'.wav', '.flac', '.mp3', '.aiff', '.ogg'} # 统计信息 total_files = 0 copied_files = 0 skipped_files = 0 not_found_in_map = set() print("🚀 开始复制并转换文件夹名...") print("="*60) for root, dirs, files in os.walk(source_dir): for file in files: # 检查是否为音频文件 ext = os.path.splitext(file)[1].lower() if ext not in audio_extensions: continue total_files += 1 # 检查文件名是否包含 -ff- if '-ff-' in file: # 源文件完整路径 source_path = os.path.join(root, file) # 获取相对于源目录的路径,并分割成路径组件 rel_path = os.path.relpath(root, source_dir) path_parts = rel_path.split(os.sep) # 记录未映射的路径组件(用于调试) for part in path_parts: if part not in FOLDER_MAP and part not in INSTRUMENT_MAP: if part not in ['ordinario', '..', '.']: # 忽略常见操作符 not_found_in_map.add(part) # 将路径组件中的英文名转换为中文 chinese_parts = get_chinese_name(path_parts) # 构建中文目标路径 chinese_rel_path = os.path.join(*chinese_parts) target_path = os.path.join(target_dir, chinese_rel_path) # 创建目标目录 os.makedirs(target_path, exist_ok=True) # 构建目标文件路径 dest_path = os.path.join(target_path, file) # 复制文件 try: shutil.copy2(source_path, dest_path) copied_files += 1 # 显示转换信息(只显示有变化的) if rel_path != chinese_rel_path: print(f"✓ 复制: {rel_path}/{file}") print(f" ↳ 转换为: {chinese_rel_path}/{file}") else: print(f"✓ 复制: {chinese_rel_path}/{file}") except Exception as e: print(f"✗ 复制失败: {source_path} -> {e}") else: skipped_files += 1 # 打印统计信息 print("\n" + "="*60) print(f"📊 统计结果:") print(f" 总音频文件数: {total_files}") print(f" 已复制 -ff- 文件: {copied_files}") print(f" 跳过的文件: {skipped_files}") print(f" 目标目录: {target_dir}") # 如果有未映射的路径,提示用户 if not_found_in_map: print(f"\n⚠️ 以下路径组件未找到映射,已保留原名:") for item in sorted(not_found_in_map): print(f" - {item}") print(" 提示: 可以在 INSTRUMENT_MAP 或 FOLDER_MAP 中添加这些项") print("="*60) def preview_conversion(source_dir): """ 预览功能:显示哪些文件夹名会被转换 """ print("🔍 预览文件夹名转换效果:") print("-"*60) # 收集所有将被转换的路径 conversion_examples = [] all_parts = set() for root, dirs, files in os.walk(source_dir): rel_path = os.path.relpath(root, source_dir) if rel_path == '.' or rel_path.startswith('..'): continue path_parts = rel_path.split(os.sep) # 找一个包含ff文件的路径作为示例 has_ff = any('-ff-' in f for f in files) if has_ff and len(path_parts) >= 2: chinese_parts = get_chinese_name(path_parts) if path_parts != chinese_parts: conversion_examples.append((path_parts, chinese_parts)) # 收集所有路径组件 for part in path_parts: all_parts.add(part) # 显示哪些会被转换 mapped_parts = {p for p in all_parts if p in FOLDER_MAP or p in INSTRUMENT_MAP} unmapped_parts = {p for p in all_parts if p not in FOLDER_MAP and p not in INSTRUMENT_MAP} if mapped_parts: print("✅ 会被转换的文件夹名:") for part in sorted(mapped_parts): chinese = FOLDER_MAP.get(part, INSTRUMENT_MAP.get(part)) print(f" {part} -> {chinese}") if unmapped_parts: print("\n⚠️ 未找到映射,将保留原名的文件夹名:") for part in sorted(unmapped_parts): if part not in ['ordinario', '..', '.']: print(f" {part}") # 显示几个转换示例 if conversion_examples: print("\n📝 转换示例:") for original, chinese in conversion_examples[:5]: print(f" {'/'.join(original)}") print(f" -> {'/'.join(chinese)}") print() print("-"*60) if __name__ == "__main__": # 配置路径 source_directory = "." # 当前目录 target_directory = "./tinySOL_ff_only_中文" # 目标目录(中文文件夹名) print(f"源目录: {os.path.abspath(source_directory)}") print(f"目标目录: {os.path.abspath(target_directory)}") print("-"*60) # 先预览转换效果 preview_conversion(source_directory) # 询问是否继续 print("\n⚠️ 即将开始复制文件,确认继续?(y/n)") confirm = input().strip().lower() if confirm in ['y', 'yes', '是']: # 执行复制 copy_ff_files_with_chinese(source_directory, target_directory) print("\n✅ 处理完成!") else: print("❌ 已取消操作")

清洗数据之后,和在项目页面使用相同,先设置一个维度且含4个标签;而后选择一个标签,点击“导入音频”按钮给该标签导入数据即可:

将数据导出,并重命名。

三、模型构建

我们使用“音频数字分类”模型相同的模型,仅修改输入、输出参数即可:

将XML和JSON均导出并重命名。

四、训练

和在项目中训练相同,导入模型、数据,打开数据增强的全部选项,开始训练。为了得到稍好的已训练模型,我们可以选择多训练几轮或者训练一些轮次之后点击“继续训练”,使用上述数据和模型,训练20轮可以使得损失降低到0.4左右,模型可以表现出较高的准确率:

导出已训练模型,在预测器中进行验证,如果能够达到较为理想的效果,就可以回到项目编辑界面上传保存的数据。而后回到前台的项目中,点击打开该项目,即可看到完整的项目实例:

在Ai创想实验室中,通过建立已有项目类型的实例可以非常便捷的实现“个性化”、“校本化”的AI实验项目。这为中小学开展“个性化”的AI教学提供了极大便利。

在AI创想实验室中,我们无需编程基础,不用学习框架,不用配置环境,无需购买费用高昂的显卡,更不用为云端算力付费,使用当前已有的各种硬件:仅有核显的个人、办公、机房电脑,希沃白板等都能达到理想的教学效果。操作简单但AI核心知识样样俱全,无需师资培训就可以进行教学且能取得理想的教学效果。如果加入试点或合作方那么只需要一台局域网服务器(无需显卡、服务器不用供算力)即可一次投入永久使用全部项目和功能,通过后台管理一分钟即可创建一个本地化、校本化的项目实例。

有任何问题欢迎留言或发送邮件至:hello@AiEduLab.tech

相关新闻

  • 针对 Zth(t) 数据和积分结构函数数据的完整 C# 处理方案 包括反卷积(时间常数谱提取)、Foster 模型拟合、Foster → Cauer 转换 以及结构函数生成
  • 保时捷明确:永远不会有纯电911,保时捷想干嘛?
  • 不只看细胞比例:PCF80如何补充淋巴结转移研究的空间信息

最新新闻

  • Docker 镜像供应链安全:镜像能拉下来,不代表可信
  • 《大模型实战指南》—— 面向软件开发者的系统性入门8
  • 汽车工程中的需求管理:2025年最佳实践
  • GPT-4 Turbo与Claude 3技术对比及国产大模型落地实践
  • 【IJCV 2026 顶刊】最新研究: 中国学者提出图像分割物理正则化损失函数,图像分割技术迎来“物理+AI”新范式!
  • 工业级-40°C~125°C+10µA静态电流:SN74LVC1G07DBVR的低功耗宽温逻辑器件

日新闻

  • STM32F745VG与MC6470 IMU的高性能姿态控制系统设计
  • 机器不消费,人何以生存
  • AI项目操作手册编写规范与最佳实践

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号