睡眠音频分割及识别问题(六)--输入输出及方案讨论

简介

2021年7月13日,我和我的三个研究生一起拜访了玉米树,和王总等一起针对睡眠音频分割及识别问题进行了深入的讨论,达成了如下共识。

输入

由于保存整个晚上的睡眠音频所需要的存储空间过大,目前拟采用每隔30分钟(可自定义)录制一段睡眠音频,然后对这段音频进行分割及识别,并保存鼾声、梦话等片段。
选择30分钟作为时间片段,主要基于存储空间的考虑,下面对存储空间进行分析。
30分钟单通道、16位采样位数、采样频率44.1kHz音频的不压缩数据存储量计算方法如下:
每秒44100个采样点,44100 * 2=88200字节,30分钟:30 * 60 * 88200=158760000字节
158760000/1024/1024 约等于150MB。

输出

(1)一些睡眠事件的开始和结束时间,比如鼾声、梦话、翻身、咳嗽、打喷嚏、磨牙及其它;

  • 开始和结束时间有两种方式来表示,第一种方式是以事件为基础(时间不定长),第二种方式是以固定时间段为基础(时间定长,用户设定),到底采用哪种方式需要进一步讨论;
  • 如果采用以事件为基础,则涉及到音频片段合并策略;
    (2)这些睡眠事件对应的标签分布。

方案

采用的方案包括音频分割及识别两个方面。

分割策略

策略一:对音频按等时长进行分割,如每隔4s(可自定义),然后对分割后的音频进行识别,如果是静默音,则不保存;
等时长分割
优点:计算资源要求较低;
缺点:容易漏测或者多测,预测精度较低。比如在第3s开始打鼾,预测时第一个窗口被认定为鼾声,这会导致0~4s都认为是鼾声。

策略二:采用滑动窗口进行分割,如窗口大小为4s(可自定义),步长为1s(也可自定义,一般要小于窗口长度),对每个窗口执行预测,若为目标检测事件,则记录开始时间与结束时间。
滑动窗口
优点:这种策略分割的音频就会有重叠部分,可以更好的检测音频事件的开始位置;
缺点:音频重复参与运算,计算资源要求较高。
准备对两个策略进行对比实验后,再决定最终方案选择哪个策略。

识别方法

拟采用PANN框架(YouTube)进行识别,面临的问题有:
(1)睡眠声音识别后大致划分为鼾声、梦话、翻身、咳嗽、打喷嚏、磨牙、其它几个大类;
(2)在PANN框架中有527个音频类别,但没有翻身、梦话、磨牙等我们需要的类别。
(3)梦话的形式较多,可能包括尖叫、呻吟、普通说话声、嗡嗡声等复杂声音,不太确定能归为527个类别中哪些类。
(4)如何平滑连续音频的问题,我们认为连续音频之间具有某种关联性,如何刻画这种关联性呢?(可以作为研究生发表论文的方向)
拟采用如下方法来解决:
(1)音频获取:从网络上获取翻身、梦话、磨牙等音频,如freesound.org;如果网络上没有,则需要我们自己来录制这些音频;
(2)解决标签不匹配问题:基于获取到的翻身、梦话、磨牙等音频,利用PANN框架进行识别,看看该框架会给出什么标签,则将该标签作为翻身、梦话、磨牙对应的标签。
(3)连续音频的处理:一个10s的连续音频,首先得到每个1s音频的标签分布,然后对这10s进行一个标签分布的平均,最后根据这个平均值来进行综合判断(这个处理需要再讨论)。

平台兼容性

建议开发出适用于Android及IOS的版本。

Android版本目前进展及面临的问题

1、目前的进展:
可以使用PANN框架对分割后的音频片段进行识别,识别的类型为该框架提供的527个类别,还没有根据目前的需求识别出规定的类别;
2、下一步的工作:
(1)采集翻身、梦话、磨牙等类型的音频,进行识别,获得对应的标签类别;
(2)编写开发文档及Java代码,代码符合玉米树规范,采用面向对象,利于后期维护。
3、面临的问题:
使用android studio运行程序遇到卡壳问题,建议重新创建一个线程来运行。

IOS版本目前进展及面临的问题

1、目前进展:还没有开始。
2、可能会面临的问题:使用xcode运行IOS程序时,会遇到一些底层代码调用报错问题,重写会比较麻烦。

其它

PANNs模型需要wav文件必须是单通道,采样率为32kHz;而YAMNet模型需要wav文件也必须是单通道,采样率为16kHz。

时间及人员安排

实验部分

音频采集及测试:2周。(梁翔宇、樊俊)
分割策略实验:2周。(容斌元、李鹏程)

开发部分

提供一个接口,输入是音频文件,返回分割后的音频及标签分布。
(1)Android端代码开发及文档编写:4周。(梁翔宇、樊俊)
(2)IOS端代码开发及文档编写:4周。(容斌元、李鹏程)

参考文献

[1] PANN框架
[2] 玉米树程序编写规范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

睡眠音频分割及识别问题(七)--接口输入输出讨论

简介 关于接口输入输出的讨论。 输入 1、音频文件路径,类型为:字符串; 2、预测多标签类型的排名,前n名,类型为:整型。 处理 1、将输入的音频分割为多个以1s为时间单位的音频片段; 2、利用P…

dhcp工具_网络分析之DHCP服务闯入QinQ二层隧道引发故障

一、Wireshark显示过滤器和QinQ二层隧道简述1.本段主要简述什么是Wireshark显示过滤器。显示过滤器是在现有的数据包中通过过滤条件,筛选想要查看的对象,不会丢失数据包,只是为了增强用户阅读而将一部分数据包隐藏起来。在“应用显…

php redis存储位置,redis数据保存在哪里

redis的数据是存在内存里吗?首先要明白redis是一个数据库,redis是一个内存数据库,所有数据基本上都存在于内存当中,会定时以追加或者快照的方式刷新到硬盘中。 (推荐学习:Redis视频教程)由于redis是一个内存数据库&…

python 多条件 选择 算法_浅析Python中的多条件排序实现

多条件排序及itemgetter的应用曾经客户端的同事用as写一大堆代码来排序,在得知Python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣。 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球…

推荐系统: 数据、问题与算法

网络的迅速发展带来了信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,导致信息超载(information overload)问题。 解决信息超载问题一个非常有潜力的办…

睡眠音频分割及识别问题(八)--数据采集

问题 在采用PANN或者YAMNet框架进行学习的时候,没有梦话、磨牙等睡眠音频数据,在一些公开数据集上也没有找到(如果有哪位读者知道,麻烦给我在评论区留言,万分感谢)。 公开数据集包括: &#xf…

旋转矩阵公式生成器_坐标变换(8)—复特征值与旋转

1.共轭复特征值设是的实矩阵,假设是的特征值,为对应的特征向量,则同样是的特征值,而是对应的特征向量,所以,当是的实矩阵,它的复特征值以共轭复数对出现。2. rotation-scaling matrix假如,为实数…

睡眠音频分割及识别问题(九)--Android下的YAMNet

部署PANNs模型面临的问题 加载模型出错 在使用PANNs模型时,在PC端可以较好的运行,可是在Android端运行的时候,编译过程提示缺少libpytorch_jni.so文件,导致无法加载模型,无法预测。(如果有读者可以解决这个…

linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...

第二波命令正向我方来袭 :开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志1.1 linux开机启动过程1.1.1 开机自检(BIOS)-- MBR引导-- GRUB菜单--加载内核(kernel)--运行INIT进程--读取/etc/inittab配置文件--执行/etc/rc.sysinit脚本(初始化脚本…

睡眠音频分割及识别问题(十)--Java读取wav文件

简介 Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的 wav),是微软与 IBM公司所开发在个人电脑存储音频流的编码格式。 由于项目需要从 wav 文件中读取音频数据,现有许多框架的 API 文档参差不齐&…

python 开发板 i2s_[Craftor原创] I2S总线接口设计(Verilog)

本文有Craftor原创,转载请保留出处。 I2S是数字音频的接口,这里不用多说,请读者自己查阅相关资料。 本文中要设计的是FPGA与数字音频芯片的I2S接口时序。简单点说,就是通过FPGA向音频芯片写数据,通过的是I2S总线&#…

深度学习(1)--引言

表示学习(representation learning) 使用机器学习来发掘表示本身,而不仅仅把表示映射到输出。 表示学习算法的典型例子为自编码器(autoencoder)。自编码器由一个编码器(encoder)函数和一个解码器(decoder) 函数组合而成。 编码器:将输入数据转换为一种…

深度学习(2)--常见概率分布(1)

许多简单的概率分布在机器学习的众多领域中都非常有用,这个内容将分为两个部分来说明,第一个部分介绍伯努利分布、二项式分布、多项式分布及范畴分布,第二个部分介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 伯努…

gdb 调试_GDB调试指南-源码查看

前言我们在调试过程中难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。 准备工作为了说明后面的内容,我们…

深度学习(2)--常见概率分布(2)

上一部分介绍了伯努利分布、二项式分布、多项式分布以及范畴分布,这里将继续介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 高斯分布 高斯分布又称为正态分布,其图形为钟形曲线(bell-shaped curve),特点是中间高、…

update 千万数据_mysql学习(四)数据库

创建数据库create database 数据库名; 创建数据库的时候,我们应该记住以下几点: 1 不能与其他数据库名重复 2 名称可以由任意字母,阿拉伯数字,下划线,美元符,但是必须以字母开头 3 名称最长为64个字符&…

linux gpio按键驱动程序,Linux GPIO Key 驱动的加载

gpio-keys是基于input子系统实现的一个通用的GPIO按键驱动,基于platform来实现,位于drivers/input/keyboard/gpio_keys.c,这个文件是硬件无关的,而硬件有关的需要我们自己来注册.进入这个gpio_keys.c这个函数,第一步就是初始化.static int __init gpio_keys_init(void){return …

深度学习(3)--常用激活函数的有用性质

1 sigmoid函数 sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。 sigmoid函数由下列公式定义: σ(x)11e−x(1)\sigma(x) \frac{1}{1 e^{-x}} \tag1σ(x)1e−x1​(1) sigmoid函数的级数表示: σ(x)1214x−148x31480x5−1780640x73114515…

kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接

一. 没开启,连接会报错二. 开启后,连接成功在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS71、 首先,要确保CentOS7安装了 openssh-server,在终端中输入 yum list i…

linux netstat服务,linux netstat查看服务和端口状态

netstat可以查看linux系统中正在使用的服务和端口情况常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服务状态-p …