-
2020-01-02 11:31:39
题目
给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用
一个更新(Update)语句
,并且没有中间的临时表。注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。
例如:
id name sex salary 1 A m 2500 2 B f 1500 3 C m 5500 4 D f 500 运行你所编写的更新语句之后,将会得到以下表:
id name sex salary 1 A f 2500 2 B m 1500 3 C f 5500 4 D m 500 题解:
# Write your MySQL query statement below update salary set sex = if(sex='m','f','m');
更多相关内容 -
gender-recognition:性别识别:使用TensorFlow的CNN训练CNBC数据集,并作出性别预测
2021-05-15 15:35:04性别识别 通过CNN神经网络,把输入的人脸图片分辨为男性或女性 数据集要求: 下载后将Caucasian数据文件放入项目目录下 运行prepear_data.py把数据分割,自动生成data目录存放分割后的数据 运行train.py训练,eval.... -
电影性别差异管理论文.doc
2021-09-21 11:05:12电影性别差异管理论文.doc -
高管性别、风险承担与企业价值的实证研究.zip
2021-09-16 05:40:56高管性别、风险承担与企业价值的实证研究.zip -
2008-2020年最新3W+数据高管团队异质性数据、代码、计算过程、原始数据
2022-03-01 18:26:39高管团队异质性即高管团队成员在人员背景、认知理念、价值观念以及职业经验等方面的差异,具体涉及年龄、性别、任期、受教育程度等多个维度。高管团队异质性所包含的内容是十分丰富的,本文研究中主要选取了人口统计... -
gender_inclusive_language:性别包容性语言
2021-04-25 00:25:04商务人士高管经理 穴居人 洞穴居民 主席 椅子,主席,协调员,负责人 牧师 神职人员神职人员 议员 议员,议员 委员 委员,委员 众议员 国会议员,国会代表,立法者 工匠 工匠手Craft.io人 门卫 门卫,保安员 每个人 ... -
我国混合所有制上市公司高管团队特征分析
2020-04-26 12:09:57高管异质性特征方面,年龄、性别和专业背景异质性过低,而学历、职业背景和任期的异质性较大;高管货币薪酬激励水平较高且逐年增强,股权激励水平则较低。因此,我国混合所有制企业在选聘高管时可以适当引进年轻成员、... -
论文研究 - 鼻s管再访:前上颌种植体的见解。
2020-05-30 21:07:56目的:使用锥束计算机断层扫描(CBCT)来评估鼻管相对于年龄和性别的变异性。 该研究还为考虑上颌前牙种植体提供了见识。 资料和方法:该研究包括200名年龄在19至67岁之间的受试者,分为以下3组:1)19-34岁; 2)35... -
卫生间管道预留孔的防渗处理qc成果材料.doc
2021-05-18 09:56:51姓 名 性别 年龄 学历 职 称 组内分工 承担工作 ※※※ 男 26 大专 助理工程师 组长 组织实施 ※※※ 男 55 大学 工程师 技术顾问 技术指导 ※※※ 男 60 中专 工程师 组员 制定实施计划 ※※※ 男 40 中专 助理... -
简历数据、人才数据、高管履历、
2021-08-09 12:16:28公司高管履历数据(1990-2020年)。数据将近8w条。...字段有:姓名、职务、任职日期、性别、国籍、出生年份、年龄、学历、最高学历、所属行业、职称、专业技术资格、年薪 上市公司高管信息、人才数据。 -
论文研究 - 腹腔镜低位前切除术治疗直肠癌后经肛门管引流预防吻合口漏的有效性和安全性
2020-05-27 04:47:46结果:两组(TT和NTT组)之间的年龄,性别,体重指数,肿瘤大小,Dukes分期,用于直肠交易的Liniar吻合器发射次数和左结肠动脉保存率可比。 术中失血量和手术时间从NTT组降低到TT组(p <0.05)。 TT组的泄漏频率... -
论文研究 - 腰椎管狭窄症手术技术的比较研究
2020-05-23 09:21:03目的:比较腰椎管狭窄症的经典开放手术和微创手术。 方法:一项比较描述性研究,纳入117例腰椎管狭窄症患者,年龄在40-70岁之间。...A组的性别均以失血量最高,其次是B组,然后是C组。研究组的患者在A组中最 -
不同性别湖羊生长激素分泌特点的比较 (2000年)
2021-05-12 21:32:336头装有颈静脉插管的成年湖羊,雌雄各半,按性别分组,间隔1 5min连续采取3h的血样,用放射免疫分析法研究了不同性别湖羊生长激素的分泌特点。结果显示:成年湖羊的生长激素呈脉冲式分泌;与雌性相比,雄性湖羊生长激素的... -
应用CBCT评估克服手术并发症的下牙槽神经管位置和心理孔的数量
2020-06-04 07:34:34对研究人群的颊侧皮层,舌侧皮层,皮层宽度,穿过下牙槽神经管中心的总宽度(IANC)和下牙槽神经管直径(IANC)进行线性测量的性别明智比较显示无统计学显着性差异(P > 0.05)。 结论:解剖变异的存在经常被忽略。... -
不同性别的川南山地黄牛生长曲线分析 (2010年)
2021-05-08 14:57:31试验测定了三峡库区不同性别的川南山地黄牛的体尺体质量,运用Logistic、Gompertz和Brody模型进行了生长曲线分析。结果表明:公牛各月龄的体尺体质量均高于母牛,3种模型都能很好地拟合公、母牛的体尺体质量生长曲线,除... -
论文研究 - 高分辨率超声在腕管综合症中位神经异常评估中的作用
2020-05-14 05:17:42A组患者组包括30例临床诊断为腕管综合症(CTS)的患者,B组为对照组,其中包括30名性别和年龄匹配的健康个体。 所有纳入的病例均接受了完整的历史记录,全面的常规检查和常规检查。 使用Caldwell Sierra Wave进行... -
带真空辅助输尿管护套的RIRS与MPCNL相比治疗2-4 cm肾结石
2020-06-23 17:22:19RIRS与真空辅助输尿管进入鞘(V-UAS)和MPCNL在肾结石治疗中的结果比较。 材料和方法。 使用RIRS和14/16 F V-UAS治疗28例2-4 cm肾结石患者。 使用配对对分析以1:2的情况将结果与接受16 F Amplatz鞘MPCNL的患者... -
论文研究 - 视神经鞘管直径的超声测量:儿童脑型疟疾的预后工具?
2020-05-22 22:59:35这项研究旨在探讨在该疾病背景下超声检查视神经鞘管直径(ONSD)的预后作用。 方法:本研究在西非贝宁共和国帕拉库大学医院中心的儿科和影像学部门进行。 这是一项描述性横断面研究,收集了从2014年3月1日至8月31日... -
论文研究 - 单独接受右美托咪定与低剂量右美托咪定联合利多卡因对腹部手术患者气管插管血液动力学反应的...
2020-05-21 00:42:27资料和方法:我们研究的患者,分别是150名年龄在20至50岁,接受全身麻醉的ASAⅠ和Ⅱ级性别的ASA I&II类患者,分为三组。 麻醉技术已标准化。 拔管前10分钟,N,D和DL组的患者在10分钟内分别给予0.9%的正常生理... -
性别是怎么产生的?
2021-03-09 17:43:25原标题:性别是怎么产生的?生命的起源、人的起源,但还有一些被我们当做天经地义的概念,也是值得咱们问一个起源的,比如性别。性别这个概念,绝大部分人只熟悉它在文化领域中的概念,所以非男即女就是根深蒂固的...原标题:性别是怎么产生的?
生命的起源、人的起源,但还有一些被我们当做天经地义的概念,也是值得咱们问一个起源的,比如性别。
性别这个概念,绝大部分人只熟悉它在文化领域中的概念,所以非男即女就是根深蒂固的思维了。如果人类真的是非男即女的话,倒也罢了,但如果人类不是只有两种性别呢?结果肯定是那些既不属于男,也不属于女的人被当作是异类受到歧视。可能你要说了,难道还有男女之外的人吗?
人类的染色体与性别
当然了,我们在生物学上给男女划线,就是看性染色体,如果是 XY 就是男人,如果是 XX 就是女人。但这个世上确实有性染色体是 XXY 的,而且还是以1/400的概率存在的,也还有 XYY 的,而且是以1/900的概率稳定存在的,还有 XXX 的,或者 XXXY 的,或者是 XO 的等等。
你觉得这几百分之一太少了吧,但是把几种都加在一起,那就是全世界有2300万人在传统的生物学定义上既不是男人,也不是女人,而且这里至少有1000万人初看起来跟普通人没有什么差异,但他们器官上的异常可能就会被人当作病人或者是怪物。这还是从生物学角度说的。
如果从文化概念上去分,男性文化与女性文化其实是一种连续的变化,没有明显的界限。一个生物属性上被定义成男性的人更认同女性文化的话,或者是反过来,一个生物属性上的女人更认同男性文化的话,也免不了被当作是异类,或者是有心理疾病的人。
我们仔细说说性别,就有助于让你了解更宽的生物界的性别。它带来的副作用,就是你在性别上会有更公平,更客观的态度。
性别诞生的意义
我们先从生物学上的性别说起。人已经是生命演化了几十亿年之后出现的一种生物了,离性别的出现太远了,所以我们要从性别出现前的那批生物说起。
最早的生物是没有性别的,只是一个短命的细胞,它为了让自己延续下去,发展出一门绝技,就是从周围的环境中选择一些材料,然后复制自己,一个变两个,两个变四个,四个变八个,这样暴增的形式。
你可能马上就能想到阿拉伯国王奖励发明国际象棋的人的故事了:在棋盘的第一格放1粒米,第二格放2粒,第三格4粒,然后是8粒,16粒,32粒,到后来国王后悔了,因为他发现整个国家的大米都不够放的。
所以我才说,一个单细胞这样的裂解是暴增的形式。
但为什么地球没有马上被单细胞的生物吞噬掉呢?两个原因:
第一个是细胞那些祖先不会一直活着,隔了几代自己就死掉了;另一个原因是环境太恶劣了,裂解它是暴增的,活不下去死去的也是暴多的,甚至有时候还支撑不下去。
但有一个机制能帮它们抵御环境的变化,就是 DNA 的变异,环境在变,DNA 也在随机地乱变,只不过 DNA 变异的概率极低极低,想让其中50%发生变化,那说不准要等到天荒地老了。
咱们随便说个数,比如说需要经历3000代的繁殖,才能完成 DNA 中50%的变化。如果一代的生命体寿命是1年呢?那完成这样剧烈的转变需要3000年。这种变异有什么好处呢?谁也不知道,就是在某次变化中,随机变异的新的 DNA 竟然能比其他的个体更能利用上恶劣环境中的资源,于是这个略微改变的 DNA 就占尽了优势,这种模式都属于是彻头彻尾的无性繁殖。
但是后来,更大的优势出现了,就是有的细胞会把自己的遗传物质一分为二,变成 A 和 A’,它在繁殖的时候不是自己完成的,而是找到其他的个体,而且它找的那个个体也是拥有遗传物质能一分为二能力的,遗传物质是 B 和 B’,这次生命繁殖之后,生出来的下一代就是 A 配 B 这个样子了,它相比原来任何一个祖先都变化了50%了,而且只需要仅仅一代的寿命就产生了这么大程度的改变,而不需要3000代那么久。这样下去,AB 型的后代再找到其它的个体,可能是 CD 型的,马上又可以仅仅通过一代的寿命又变化了50%。
咱们先不论改变之后是不是适应环境,我们只去数数改变之后出现的花样就知道了,两个配对的方式产生新花样的速度大大超越了一个人自己繁殖的速度,种类多就意味着机会多,一次环境的剧变,假如仅仅对20种生物来说,可能对它们每一种都是一场灾难。但如果一次环境剧变,面对的物种数量多了,比如说是20亿种的话,那一定其中有那么一小部分生物反而把这次环境剧变视为是一次特大的利好,可以从中渔利,这就是多样性对物种的重要性。
而这种多样性根源,就在于遗传物质不来自于单一一个物体的繁育模式,我们管这种来自于不同个体的配对物质叫配子。
所以,性别的诞生不是因为性感了,或者因为有性吸引力,那些都是文化方面粗浅的理解。 性别的诞生是因为生存压力足够大之后,演化出来的一种更具竞争力的新的生存模式。
性别的诞生大致就是这样了。
雌性与雄性的产生
那么雌雄、公母、男女为什么会出现呢?这难道只是一个给单词起名的习惯吗?也不是,那我们用什么来标记雌雄呢?就是看配子。配子我们刚刚说过,就是在有性繁殖的过程中,一方释放出来的遗传物质。但我们会观察到一个普遍的现象,就是不论动物还是植物,总会出现一方的配子数量巨大,比如有几亿个,但是每个配子却又只携带很少的营养物质。另一方的配子数量却非常少,往往只有几个,可是它携带的营养物质却特别特别多,我们就依据这个明显的差别,把携带营养物质少的那一方叫做雄性,携带营养物质多的那一方叫做雌性。
举个例子,比如鸡蛋是母鸡下的,那就是雌性的配子,这里包含了几乎可以支持一个小鸡早期20多天发育所需的全部的营养物质。可是对应的雄性的配子,那只有在显微镜下才能看到了。
你可能想问,为什么同是配子,甚至可能最早是由差异不大的无性生殖的生物演化过来的,为什么后来雄性与雌性的配子差异却这么大呢?
这也是演化来的,我们可以先假设所有的配子最初的体积大致是相同的,结构大致也是相同的,但其中必然有一些偏巧就比另外一些大了那么一点点,这些略大一些的配子就因为携带了更多的营养物质,所以相比其他的普通的配子就占据了一点点优势,那就是因为它们一开始就能给胎儿提供更多一些的养分,提供一个更好的开端,赢在了起跑线上,所以凡是可以在最初能形成一个更大配子的个体,因为这种优势就成了进化的一个趋势。
不过事情总不是一帆风顺的,因为这时候跟它配对的那个配子如果尺寸特别小,而且如果它们有一定的把握,让自己这个特别小的配子也能精准地找到那个大尺寸的配子,跟它融合在一起的话,那就相当于占了个大便宜。于是,这些有能力找到营养物质丰富的大配子的,小配子也获得了一种有优势的生存策略。
卵子与精子
你看,两种截然不同的策略,尤其是那个小的,它在之后演化出更加小巧灵活,能更积极地寻找大个配子的能力,它实在是不需要除了长途奔袭之外的任何能量,最终在二倍体生物中,配子开始朝两个方向发展。
如果用形象的比喻就是,一种配子是憨厚实在的,一种配子是狡猾狡诈的,可是它们看起来,这个差异实在太大了。管它们都叫配子已经不合适了,于是我们就改口,前者叫做卵子,后者叫做精子。
好了,我们就从演化的角度把性别的产生说清了,也说清了雌性与雄性的产生。
【声明:所有内容均来自网络,编者对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。版权属于原作者,如有侵权,请联系删除。】返回搜狐,查看更多
责任编辑:
-
sync-everyaction-demographic-data:一个容器脚本,用于将EveryAction种族和性别数据同步到Redshift
2021-04-08 04:41:08EveryAction在其商业管道同步中不包括种族和性别。 Sunrise设计了一个自定义同步,以将人口统计数据引入我们的Redshift仓库。 我们的同步带来了性别,种族以及其他一些自定义字段。 您可以修改此脚本以引入所需的... -
升级:推动非裔美国女性进入美国企业高管的成功因素-研究论文
2021-06-10 02:35:10研究表明,公司董事会中的女性与更好的财务业绩、高级管理人员之间更好的性别组合以及与更好的财务业绩的联系有关。 根据 Catalyst(2019 年)的数据,2007 年至 2015 年间,女性占金融服务行业所有员工的 58%。在... -
人脸图像特征提取matlab代码-analyzing-chimpanzees:黑猩猩的多项任务,例如年龄识别,识别,性别预测等
2021-05-22 07:01:41哪个性别? (分类) 以下是我们整个管道的可能输出。 需求/依赖 源代码是在Matlab 8.2中开发的 要使用当前支持的所有功能,需要以下库 暗网(物体检测) Caffe(特征提取,分类,回归) LibLinear(分类) gpml... -
论文研究 - 植入手术中与年龄,性别和牙齿状态相关的Gen神经丛的大小和位置的评估
2020-06-01 12:37:50这项研究的目的是测量CBCT图像中the神经丛的尺寸及其三维位置,并将该结构的特征与患者的牙齿状况,性别和年龄相关联。 总共进行了149次锥齿计算机断层扫描(CBCT)扫描,包括齿状(n = 74)和无牙颌患者(n = 75)... -
说话人性别识别——语音检测初探
2022-02-22 19:56:30说话人性别识别——语音检测初探 任务分析 特征抽取 数据集 模型 实战目录
一、任务背景和分析
公司有项目需求,需要识别语音信号是男女性别以及是否是彩铃等。之前一直是做文本相关的NLP相关项目,为此也开始慢慢涉足语音领域了。语音领域和文本NLP领域是不一样的,我猜测——目前语音领域相关的预训练模型还不成熟,端到端的方案还不足以满足商用的需求,比如ASR或者SST语音自动识别的方案HUBERT和wav2vec等——否则大家都开始使用起来了,目前应该是采用一些比较传统的方案。
ASR任务目前对我们公司来说,自研还是非常困难的,就直接使用生态伙伴科大讯飞的算法;项目需求区分男女声和彩铃的声音,其实这个任务还是比较简单的,并没有语音识别或者声纹识别中那么复杂。在数据质量和场景简单的情况下,应该能取得不错的效果。
语音信号是时域信号,目前基于时域信息对语音进行分析的貌似不是特别多,没有比较好的模型直接提取到合适的特征;一般而言都是通过传统的信号处理方案来做的,把语音时域信号转化为时域信号后就能得到很多特征,比如:MFCC、Fbank、bark谱、基频、能量幅度、短时过零率之类的——详见语音特征小结。
区分男女性别以及彩铃信号这样的任务,主要的关键点在哪里呢?主要能找到区分它们三者的特征,就可以使用深度学习的模型或者机器学习的模型,或者直接使用规则来做。需要找到什么样的特征呢?
录了自己和女同事的音频,得到时序和频谱图(上图女,下图男)。感觉就从频谱图上直接看,还是看不出来的。一般而言男女声音的音高也就是频率是不一样的,但是也有重叠的部分;同时彩铃一般含有音乐的声音,它和人说话也有很大不同,音色不同,这个感觉在数理上反映也是频率的不同——据个人不完全理解这里的不同应该就是频率的分布不一样了,所以具体什么样的特征能区分开来也不是十分清楚的。那这个时候就得想到了深度学习的方案了,让模型自己去抽取相应的特征,也不需要管什么频率具体的分布,谱质心、谱对比度、基音周期等等特征,直接抽取语音信号的Fbank、Mfcc等特征,它们具体的区别,我不是专业的不清楚——知乎高赞问答解释如下语音信号提取声学特征时,MFCC和PLP的区别是什么?,喂入模型中即可!
另一方面这是一个简单的分类任务,它们3个类直接本来就存在天然的差异,也不需要太复杂的模型,应该就能搞定。
所以基本的方案就是
1、抽取Mfcc或者Fbank特征
2、Mfcc或者Fbank特征喂入模型(CNN/Lstm/LSTM+CNN)
3、分类得出结果。
当然也可以采用语音领域的预训练方案,wvNet或者wav2Vec这样的预训练+finetune的方案,这个方案比较新还没来得及学习,后续会学习,然后验证。
二、特征抽取
librosa
由于librosa库提供的特征提取API比较丰富,便选择了该库进行Mfcc和Fbank的提取。这里没啥好聊的,原理部分mfcc和fbank计算过程比较复杂详见——语音信号处理之(四)梅尔频率倒谱系数(MFCC)和语音识别特征处理(MFCC,Fbank,PNCC)
,而我就当个调包侠吧(原理部分就多去看几遍吧)。主要对提取特征的API的一些参数和遇到的坑进行一些总结吧
librosa.load(wav_path, sr=sr)——音频文件加载
把字节流的音频文件加载为基于sr抽样率的采样点数据,浮点数float32,numpy.array
注意点,mp3格式的文件需要调用其他的库,需要pip install;sr不设置会已默认的sr=22050
librosa.util.frame(wav, frame_length=frame_length, hop_length=hop_length)——分帧
设置帧长和帧移,这不是时间单位,而是采样点个数。比如采样率16000,1s内采样16000个数据点;frame_length 30ms应该就是480个采样点frame_length=480
fbank = librosa.feature.melspectrogram(y=wav, sr=sr, n_fft=frame_length, hop_length=hop_length, center=False,n_mels=128) fbank = fbank.T fbank = librosa.power_to_db(fbank)——梅尔频谱
n_fft短时傅里叶窗口长度,和帧长是一致的;n_mels采用多少个mel滤波器,最后得到的特征就是多少维度的;center参数需要进入源码去看,如果为True,表示音频会做padding,会使得帧D[:, t]的中心为信号 y[t * hop_length];而center=False的时候,不采用padding;要使得分帧后抽取特征再把特征cat起来和不分帧直接抽取特征的结果一致的话,就得采用center=False。
librosa.feature.mfcc(y=wav, sr=sr, n_mfcc=13, n_fft=frame_length, hop_length=hop_length, center = False, win_length = frame_length)——mel倒谱系数
librosa.feature.spectral_centroid(y=wav, sr=sr, n_fft=frame_length, hop_length=hop_length,center = False)——频谱中心
librosa.feature.spectral_contrast(y=wav, sr=sr, n_fft=frame_length, hop_length=hop_length, n_bands=4,center = False)——频谱对比度
librosa.core.piptrack(y=wav, sr=sr, S=None, n_fft=frame_length, hop_length=hop_length,center = False)
wave
读取语音的字节流和librosa中提取特征的不同
def read_wave(path): """Reads a .wav file. Takes the path, and returns (PCM audio data, sample rate). """ with contextlib.closing(wave.open(path, 'rb')) as wf: num_channels = wf.getnchannels() assert num_channels == 1 sample_width = wf.getsampwidth() assert sample_width == 2 sample_rate = wf.getframerate() assert sample_rate in (8000, 16000, 32000, 48000) pcm_data = wf.readframes(wf.getnframes()) params = wf.getparams() nchannels, sampwidth, framerate, nframes = params[:4] return pcm_data, sample_rate
wave读出来的是16bit的字节流,pcm编码数据,形如:
一般而言,采样率sr = 16000的话,1s音频采样数据点就为16000个,而得到的pcm字节流就是32000个。这个时候需要分别存储模型是小端模式还是大端模式,可以把16bit的byte转化为int型和float型,神经网络中需要处理float32型数据。处理就是把2个长度的byte传化为1个int或者float:
#把bytes转化为int for k in range(0,int(len(frame_byte)/2)): pcmInt.append(int.from_bytes(frame_byte[k * 2:k * 2 + 2], byteorder='little', signed=True)) # 再转化为float32 feature = np.array(pcmInt)/0x7fff
使用struct.unpack()转化——把16进制的2个byte字节流转化为float
pcmFloat = [] for k in range(0, int(len(frame_byte) / 2)): pcmFloat.append(struct.unpack('h', frame_byte[index * 2:index * 2 + 2])[0] / ((2 ** 15) - 1))
最后一种直接把一长串的16进制字节流转化为short int型,然后再做除法,得到最后的float32型数据np.frombuffer():
feature = np.frombuffer(frame_byte, ctypes.c_short)/0x7fff
以上3中方法,其中最后一种最好,CPU占用最少。
torchaudio
torchaudio 支持以 wav 和 mp3 格式加载声音文件
metadata = torchaudio.info(SAMPLE_WAV_PATH)//查看音频信息 waveform, sample_rate = torchaudio.load(SAMPLE_WAV_SPEECH_PATH)//加载音频返回的是张量 torchaudio提供了Spectrogram,MelSpectrogram,MFCC等特征的提取 specgram = torchaudio.transforms.Spectrogram()(waveform) specgram = torchaudio.transforms.MelSpectrogram()(waveform)
三、数据集
由于是前期预研,验证方案的可行性,数据集采用了公共数据集
commonvoice [ 中文]
四、模型训练
1、频域信号+LSTM+2DCNN
尝试的特征分为频域信号的MFCC和Fbank;模型层面首先采用的是LSTM和二维卷积以及残差二维卷积网络的组合。测试出来后的效果还可以,这里采用二维卷积网络的原因就是直接凭直觉把一帧一帧的语音信号,组合为一个语音图像,就类似图像分类,所以采用了这个网络。
简单的看看具体的流程:
MFCC
语音信号——》分帧——》过VAD——》判定is_speech,并用循环链表判定人声起始和结束点——》合并所有的frames注意去掉重复的——》librosa抽取各种特征包含{mffc、基音周期、谱质心和谱对比度}——》lstm+ nn.Linear
- Fbank+CNN+resCNN+RNN(LSTM)
FBank
语音信号——》分帧——》过VAD——》判定is_speech,并用循环链表判定人声起始和结束点——》合并所有的frames注意去掉重复的——》librosa抽取各种特征包含{Fbank、基音周期、谱质心和谱对比度}——》lstm+ nn.Linear
- Fbank+CNN+resCNN+RNN(LSTM)
以上方案的准确率有细微差别,大致在下面数据附近,当然也和采用的帧数有关
Test_acc:0.943867 Test_recal:0.857778 Test_f1:0.826552
模型代码如下:
class GenderRecogiCnnLstmModel(nn.Module): def __init__(self,n_class=2,rescnn_layers = 1,rnn_layers = 1,n_feats=128,dropout=0.1): super(GenderRecogiCnnLstmModel,self).__init__() self.cnn = nn.Conv2d(in_channels=1,out_channels=4,kernel_size=3,stride=1,padding=3//2) # n residual cnn layers with filter size of 32 self.rescnn_layers = nn.Sequential(*[ Residual2DCNN(4, 4, kernel=3, stride=1, dropout=dropout, n_feats=n_feats) for _ in range(rescnn_layers) ]) self.rnn_layers = nn.Sequential( *[ nn.LSTM(input_size=n_feats if i==0 else n_feats*2,hidden_size=n_feats,batch_first=True,bidirectional=True) for i in range(rnn_layers) ] ) self.classifier = nn.Sequential( nn.Linear(n_feats * 2, n_feats), # birnn returns rnn_dim*2 nn.GELU(), nn.Dropout(dropout), nn.Linear(n_feats, n_class) ) def forward(self,embeddings,mask): # embeddings [B,L,D] x = embeddings.unsqueeze(1).permute(0,1,3,2)# [B,1,D,L] x = self.cnn(x) #[] x = self.rescnn_layers(x) x = x.view(x.shape[0],-1,x.shape[-2]) x,_ = self.rnn_layers(x) # x = self.pooling(x, mask) x = torch.mean(x,dim=1) out = self.classifier(x) out = torch.softmax(out, dim=-1) return out def pooling(self,embedding,mask): embedding_mask = mask.unsqueeze(-1).expand(embedding.size()).float() t = embedding * embedding_mask sum_embeddings = torch.sum(t,dim=1) sum_mask = embedding_mask.sum(dim=1) # 限定每个元素的最小值是1e-9,保证分母不为0 sum_mask = torch.clamp(sum_mask, min=1e-9) # output_vectors = [] # output_vectors.append(sum_embeddings / sum_mask) # # output_vectors = torch.cat(output_vectors, 1) output_vectors = sum_embeddings / sum_mask return output_vectors class Residual2DCNN(nn.Module): """Residual CNN inspired by https://arxiv.org/pdf/1603.05027.pdf except with layer norm instead of batch norm """ def __init__(self, in_channels, out_channels, kernel, stride, dropout, n_feats): super(Residual2DCNN, self).__init__() self.cnn1 = nn.Conv2d(in_channels, out_channels, kernel, stride, padding=kernel // 2) self.cnn2 = nn.Conv2d(out_channels, out_channels, kernel, stride, padding=kernel // 2) self.dropout1 = nn.Dropout(dropout) self.dropout2 = nn.Dropout(dropout) self.layer_norm1 = CNNLayerNorm(n_feats) self.layer_norm2 = CNNLayerNorm(n_feats) def forward(self, x): residual = x # (batch, channel, feature, time) x = self.layer_norm1(x) x = F.gelu(x) x = self.dropout1(x) x = self.cnn1(x) x = self.layer_norm2(x) x = F.gelu(x) x = self.dropout2(x) x = self.cnn2(x) x += residual return x # (batch, channel, feature, time) class CNNLayerNorm(nn.Module): """Layer normalization built for cnns input""" def __init__(self, n_feats): super(CNNLayerNorm, self).__init__() self.layer_norm = nn.LayerNorm(n_feats) def forward(self, x): # x (batch, channel, feature, time) x = x.transpose(2, 3).contiguous() # (batch, channel, time, feature) x = self.layer_norm(x) return x.transpose(2, 3).contiguous() # (batch, channel, feature, time)
2、频域信号+2DCNN
由于上述方案中的模型比较复杂,训练和推理速度有点慢,又尝试了一维卷积+残差卷积的组合,不采用lstm。
- Fbank+CNN+resCNN
- 当然语音信号的前期处理,分帧VAD等操作都是需要的,另外一个就是调整帧数,到底需要采取多少帧,这个和线上业务以及性能要求有关系。
-
Test_acc:0.944560 Test_recal:0.937778 Test_f1:0.840637
模型代码如下:
class GenderReco1DCnnModel(nn.Module): def __init__(self,n_class=2,n_feats=128,dropout=0.2): super(GenderReco1DCnnModel,self).__init__() self.layerNorm = nn.LayerNorm(n_feats) self.cnn = nn.Sequential( nn.Conv1d(in_channels=n_feats,out_channels=64,kernel_size=8,stride=4,padding=2), nn.ReLU(), nn.Conv1d(in_channels=64,out_channels=32,kernel_size=4,stride=2,padding=2), nn.ReLU(), nn.Conv1d(in_channels=32, out_channels=16, kernel_size=2, stride=1,padding=2), nn.ReLU(), ) def forward(self,embeddings,mask): x = embeddings[:, 0:100, :] # embeddings [B,n,D] x = self.layerNorm(x) x = x.permute(0,2,1) x = self.cnn(x) # [] x = x.view(x.shape[0],-1,x.shape[1]) x = torch.mean(x, dim=1) out = self.classifier(x) out = torch.softmax(out, dim=-1) return out
3、时域信号+1DCNN
实验的过程中发现,在上线的过程中,语音信号是流式的传输且需要单机支持并发5000路,在提取MFCC或者Fbank特征的时候CPU瓶颈是支持不了的。方案应该采取消耗资源更低的提取特征的方案,可以尝试时域信号,也就是直接把语音信号波形图经过处理后作为模型输入,同样是需要对信号进行分帧,vad检测等。分帧以后,可以把一帧一帧看做一个语音单位,那么就有点类型TextCNN的情形,可以借鉴一维卷积网络来做。
- 时域信号+CNN+resCNN(一维卷积)
模型网络很简单,如下
class GenderRecoTimeDomainVoiceModel(nn.Module): def __init__(self, n_class=2, rescnn_layers=10, n_feats=128, dropout=0.1): super(GenderRecoTimeDomainVoiceModel, self).__init__() self.layerNorm = nn.LayerNorm(n_feats) self.cnn = nn.Conv1d(in_channels=n_feats,out_channels=64,kernel_size=8,stride=4,padding=2) # n residual cnn layers with filter size of 32 self.rescnn_layers = nn.Sequential(*[ Residual1DCNN(64, 64, kernel=3, stride=1, dropout=dropout, n_feats=25) for _ in range(rescnn_layers) ]) self.classifier = nn.Sequential( nn.Linear(64, 64), # birnn returns rnn_dim*2 nn.GELU(), nn.Dropout(dropout), nn.Linear(64, n_class) ) def forward(self, embeddings): # embeddings [B,L,D] x = embeddings[:, 0:100, :] # embeddings [B,n,D] x = x.view(x.shape[0],-1,480) x = self.layerNorm(x) x = x.permute(0, 2, 1) x = self.cnn(x) # [] x = self.rescnn_layers(x) x = x.permute(0, 2, 1) x = torch.mean(x, dim=1) out = self.classifier(x) return out
最后的结果
基本满足上线准确率需求,同时这个方案,经过工程化的优化,已经实现了单机5000路的并发。
以上就是本人第一个语音项目的探索,很简单,学习到了一定的语音领域的知识,后面再接再厉,好好学习ASR和TTS相关知识,争取成为NLP和语音算法工程师!
-
高管团队人力资本与企业创新
2019-12-28 06:22:36高管团队人力资本与企业创新,邹豪谦,李海峥,本文主要研究了高管团队的教育、性别、年龄和海归背景对企业创新绩效的影响,力求全面地探讨高管团队人力资本对企业创新的影响。 -
有关病毒-疯狂自由女孩简介
2011-06-26 10:49:32对疯狂自由女孩(Lhsurdj.exe)病毒的分析 -
人的性别有五种
2021-07-26 15:45:52人的性别有五种 我们有关性别的观念需要更新,人的性别不只是男女两种,它起码有五种:男性、偏男性、两性人、偏女性、女性。 我们通常认为基因决定了性别,事实果真如此吗?如果某人认为自己是个女性,其外表看上去...人的性别有五种
我们有关性别的观念需要更新,人的性别不只是男女两种,它起码有五种:男性、偏男性、两性人、偏女性、女性。
我们通常认为基因决定了性别,事实果真如此吗?如果某人认为自己是个女性,其外表看上去也酷似女性,且行为举止女性化,具有女性的外部生殖器官,但其体内却没有XX 染色体和卵巢,相反却具有XY 染色体和内部睾丸,那么此人究竟是男性还是女性?
1968年以来的30余年间,国际奥林匹克委员会对所有参赛女运动员的染色体进行了检查,查看她们中是否有人含有Y 染色体却参加了女子比赛。据说有Y 染色体的运动员比普通女性在比赛里更具优势。据统计,在每次比赛里,每400名女运动员中就有1人含有Y 染色体。国际奥委会已于1999年停止染色体检查,因为基因学家和医生们多年来一直对此问题争论不休,他们认为具有XY 染色体并不等于男性。
医学上也将性器官作为区别男女性别的重要方法。如果一个人的染色体、身体结构和社会学习环境都指向同一个性别方向(不论是男性,还是女性),那么他(她)就会在无意识中形成自己的性别意识。目前人们普遍接受的两性模式为:男性具有XY 染色体、雄性激素、输精管和阴茎;女性具有XX 染色体、子宫、雌性激素、输卵管、乳房和阴道。但这实际上并不绝对正确。
如果一个孩子在出生时的性别较为模糊,医生和家长很快便会决定确定孩子的性别,但是不论做出哪种选择,通常都需要进行外科手术、激素治疗和心理治疗。现在,越来越多的具有两性特征的人批评这类手术是对人的伤害,要求社会对性别重新定义。北美兼有两性特征者协会已经建立了用因特网连结起来的全国性组织,他们要求取消对两性人进行外科手术,增强公众对两性人存在的意识和对他们宽容的社会环境。
通向性发育之路
人类胚胎的生长发育,就像一辆汽车沿着性发育的道路前进,直至成为一名女性,但是在这条成长道路上有5个性别转换路口,它们会发出性别转换信号,让胚胎转向男性发育道路。
在胚胎中既有成为男性所需的因素,也有成为女性的因素,染色体会发出信号,决定生殖腺最终变成睾丸或卵巢。新形成的生殖腺会发出激素信号,决定连结性器官的管道(我们称之为输送系统)是发育成输精管还是输卵管。生殖腺激素信号也决定着外部性器官细胞是发育成阴茎、前列腺和阴囊,还是阴蒂、阴道和阴唇。性别特征的混乱可能是由于转变信号发出的时机不当造成的。
胚胎形成6周后,开始接近第一个性确定关口。根据人类目前掌握的知识,Y 染色体是做出性别决定的关键,它能够导致胚胎向男性方向发育。向男性方向发育的胚胎在第8或第9周时到达了第二个性别关口,此时,生殖腺组织生长发育成睾丸。当睾丸开始分泌激素时,第三个性别关口便到来了。胚胎要想继续发育成正常男性,睾丸必须产生足够数量的雄性激素(包括睾丸激素),同时激素受体必须接受这些雄性激素。雄性激素是以后性发育过程中最重要的信号。
睾丸分泌的雄性激素使胚胎以更快的速度向着第四和第五关口发育。雄性激素产生大约一周后,胚胎也就发育到了第四关口。此时,雄性激素刺激输精管的输送系统生长发育成附睾、输精管等。大约10周后,胚胎到达第五个关口,男性外部生殖器官也就开始形成了,雄性激素的出现刺激了阴茎、阴囊和尿道等从未分异细胞里逐渐形成。男性发育过程中的任何差错,如性别基因的缺陷、雄性激素数量不足、雄性激素的接收错误等都会导致胚胎发育转向女性方向,从而导致混合性器官的出现。
正常的女性发育始自XX染色体的形成出现,那大约是在胚胎发育8周后。胚胎进入女性发育道路,生殖腺组织变成了卵巢,卵巢产生雌性激素,10周后,在没有雄性激素作用的情况下,输卵管便形成了。子宫、上阴道、子宫颈、阴唇、阴蒂、阴道、尿道等内外性器官也随之形成了。
染色体的混乱
正常男性染色体若多出一个X 染色体,将会导致克兰费尔特氏综合症(XXY)。这类人由于既携带男性染色体,又携带女性染色体,因此拥有男性内部生殖器官和外部生殖器官,但是睾丸和阴茎却没有在青春期发育充分。该病常见的特点是腿部较长,睾丸和阴茎很小,嗓音尖细,没有胡须、阴毛、体毛。具有这种综合症的人通常像正常男人一样生活,但需要接收雄性激素,并且他们向异性变化的可能性仍然很大,而那些像女性一样生活的人,也同样得接受雌性激素。
如果父母只将一个X 染色体遗传给胚胎,就会产生特纳氏综合症(XO)。由于这些人只有一个X染色体而没有Y 染色体,因此她们具有女性特征,像女性一样生活。她们的身材较矮,没有喉结,月经很少,卵巢发育不全,没有体毛,外部性器官发育不全,有些人甚至没有乳房。如果这种疾病发现得早,并随之用雌性激素进行治疗,那么这些人的外部发育会得到极大改变,可以像正常的女性一样生活。
其他类型的染色体反常现象不会产生严重问题,例如具有XYY 染色体的人通常会长得很高,并产生粉刺,这个多出的Y 染色体究竟会产生什么样的影响,目前仍存有争议。一些研究结果发现,具有XYY染色体的人犯罪率较高,这个多出的Y 染色体与人的过激性行为之间究竟有无关系,目前尚无定论。
具有XXX染色体也大有人在,但不会有太严重的后果,这些妇女甚至根本不知道她们的细胞里还多带了一个X。
雌雄间性
性别紊乱主要有三种不同类型的情况,其主要原因是由于在性别发育的五大关口上出现一种或多种交叉信号,染色体的主要构成情况如下:XXY、XO、XYY、XXX。
I型雌雄间性(也称做女性两性化)具有卵巢,但其内外性器官却是两性的混合体。所有该类型的人都具有XX染色体、卵巢和输卵管,医生们通常采用外科手术使其外部性器官变成女性器官。这类人通常被当成女孩子抚养长大,她们绝大多数能够通过外部帮助成为真正的女性。
一切非标准的内外性器官混生现象,只要有腹部的睾丸系统出现,被称为II型雌雄间性(也称为男性两性化),其产生的原因多种多样,一般来说是由于男性胚胎的缺陷造成的,而这一缺陷又主要是由于雄性激素合成和雄性激素接收方面存在缺陷造成的,这类患者大多具有XY 染色体构成。
II型雌雄间性有一种特有的形式,我们称之为雄性激素不灵敏综合症,或称外生殖器女性化。据统计,患有这类疾病的人的比率大约在1/2000人~1/65000人之间。这类患者具有XY 染色体,有产生雄性激素的睾丸,但是由于他们的基因有缺陷,或是基因突变,从而使他们无法对雄性激素产生反应,接收不到雄性激素。因此最终产生了子宫和女性输卵管,并发育出较短小的阴道。
虽然从外部来看,这类患者完全像个女性,但她们在青春期不会有阴毛生成,也无法产生月经,她们被当做女性抚养长大,医生通常通过手术摘除其内部睾丸,加长阴道,从而使她们能够进行正常的性生活。
III型雌雄间性是最罕见的,被人们称做真正的雌雄同体。患者既可能具有XX 染色体,也可能具有XY 染色体。人们目前对此类性别紊乱的原因知之甚少,只是猜测其成因可能是由于性染色体基因突变造成的。
仅有两性就足够了吗?
医学界很难使用目前狭义的男性或女性的定义来解释上述几种性别紊乱,具有这三种特征的患者,我们究竟应当把他(她)们当男孩还是当女孩来抚养呢?
1993年,美国布朗大学医学教授、基因学家安妮·福斯托-斯特林提出,具有以上三种双性特点的人不应对自己的性别硬性做出选择。她认为,从男性到女性这两种性别之间至少还应存在五种甚至更多的性别。她提出的五种性别分别是男性、偏男性(II型)、两性人(III型)、偏女性(I型)、女性。安妮博士指出“性别是一个巨大的统一体,它具有无限的延展性”,博士的新作《人体性别的划分》对她的新思想进行了详细的阐述。
从两性性别观发展到五种性别观,还不可能很快为大众接受。新生婴儿刚一出生,父母们想从接生医生口中听到的第一句话便是“他是个男孩”或“她是个女孩”。从法律上讲,每个成年人必须是男性或女性。让我们马上放弃两性的观点似乎太快了,但是在现实中确实有许多人的性别特征处在我们所定义的两性之外,这个问题值得我们思考。
我们经常将生活中性器官模糊或是具有两性性器官的人视为怪人,医生们也总是非常迅速地想通过先进的医学技术将他们彻底转换为两性中的一种。在过去的30多年里,医生们大多按照马尼博士的理论,认为婴儿在出生时如果性别不明确,医生们就应将具有两性特点的孩子通过手术变成男性或是女性。医学对治疗阴茎过小或康复受损阴茎尚无较佳技术,因此大多数具有两性特点的孩子都被变成了女孩。思维定式使人们想当然地认为,一个孩子必须具有2.5厘米(一英寸)长的生殖器,只有符合这一前提才被认为是男性。
目前医学界还没有大家广为接受的两性人治疗标准,这一标准也不可能很快形成。但是医学界有责任帮助那些先天性性结构不同于一般的人不再为自己感到可耻,不再进行他们并不想要的外科手术。
对性别做进一步研究是很有必要的,因为只有这样,我们才能找到治疗的最佳方法。目前人们对两性人的身体结构特点仍然存有诸多疑问:他们生活、成长的社会外部环境对他们究竟有无影响?促使XX染色体向男性转化需要多少雄性激素?外部生殖器官是否比基因更重要?随着人们对性理解的不断深入,或许人们在治疗两性人的方法上也会取得重大突破。
但是不论医学如何进步,人类社会必须扩大目前对两性的定义,从而更好地将那些具有两性染色体和两性结构的人包含在我们的性别定义里。
-
谁想聘请更多元化的教师? 教师和学生对性别和种族/民族多样性偏好的联合分析-研究论文
2021-06-09 18:11:07是什么解释了大学教员中女性和代表性不足的少数族裔相对于她们的博士份额而言? 收件人? 在许多可能的解释中,我们关注教师多样性的“需求”方面。 使用完全随机联合分析,我们探索了支持和抵制美国两所大型公立... -
语音技术――性别辨识和语者验证
2020-10-27 17:55:06语音技术――性别辨识和语者验证2010/11/24性别辨识和语者验证简介性别辨识(Gender Recognition)技术是以语音讯号处理的方法,撷取说话者的声音特征,藉此判断说话者的性别是男性或女性,如下流程图所示的技术。...