我想为我的人工智能课程开始一个关于说话人识别的项目。基本上,我想训练我的人工智能来检测是我说话还是其他人。我想要一些可以使用的建议或库。
训练人工智能识别我的声音(或任何声音)
人的声音是基于由许多部分组成的发声器官的神经肌肉控制。
- 隔膜
- 声带
- 喉咙(收缩器和反收缩器)
- 鼻腔
- 脸颊
- 颚
- 舌头
这些协调的肌肉操作产生了可以通过周期性和瞬态波形表征的音频包络(控制)。
- 体积
- 沥青
- 音调(谐波的相对音量)
- 辅音瞬变
声音是神经活动和解剖属性的学习状态所特有的,这是一种说法,即声音的习惯和声音的物理属性支持声音身份的区分。
- 发声肌肉的力量
- 肌肉与骨骼、肌腱和软骨的连接
- 声道内表面形状
- 这些肌肉的神经协调
- 语音控制的神经产生以产生语言元素
- 语义结构(想法)的神经序列化
用耳朵检测声音的区别特征同样复杂。在一个人满为患的房间里,大脑可以学会追踪一个声音。
需要注意的是,执行语音识别来确定人源的身份与执行语音识别来生成文本有很大不同。为了准确地生成文本,NLP 必须确定语言元素并构建一个语义网络来表示声音内容或来自该表示的文本,以便在发音相似的单词的情况下准确。幸运的是,在某些方面,说话者的识别比准确的语音到文本更容易。不幸的是,说话人的识别具有下面讨论的一般限制。
耳朵听觉的第一阶段是机械性的,涉及沿耳蜗表面的毛发长度,这就像一个无线电调谐器,可以同时区分一个范围内的所有频率。等效软件是通过将均方根应用于 FFT(快速傅立叶变换)的结果以提供幅度而得出的频谱。
FFT 结果的相位分量 (可以丢弃,因为它与语音的神经控制无关。
将 FFT 应用于语音(与任何变化的音频一样)需要使用窗口锥度之一对音频样本进行窗口化,例如 Hann 窗口或 Blackman 窗口。输入是作为压力样本序列的音频流或文件内容,即音频。输出是一系列频谱,每个频谱包含人声范围内每个频率的音量,从大约 30 赫兹到 15 K 赫兹。
这一系列频谱可以输入到更高级 RNN(循环神经网络)之一的初始层,例如 LSTM(长期短期记忆)网络、其双向版本、B-LSTM 或 GRU(门控循环网络),它被吹捧为训练同样好,时间或计算资源消耗更少。
说话者的身份就是标签。该系列光谱是特征。
使用 PAC(可能近似正确)学习框架,可以在实验之前估计说话者必须说的最小单词数,以在使用从网络训练中学习的参数时产生特定的准确性和可靠性。
需要一些研究来设置超参数并根据深度(层数)和宽度序列(每层的单元数,可能因层而异)设计网络的层。
该系统的用例限制是每个说话者必须阅读一些提供足够长度的训练示例序列的文本,以便有足够数量的重叠窗口供 FFT 转换为频谱,从而使训练合理收敛。
无法像识别语言内容那样绕过单个用户的培训,可以在大量说话者中进行训练,以在某种程度上独立于说话者来识别内容。该系统可以进行调整和改进,以最大限度地减少所需的语音数量,但信息论的限制使该数量永远不会接近零。
任何网络,无论是人工的还是生物的,都不能从无到有。克劳德·香农和约翰·冯·诺依曼几十年前就意识到存在一种信息守恒,就像在低于核反应阈值的空间中存在物质和能量守恒一样。这导致了比特的定义和信息的表述,即与信息提供的概率缩小相对应的比特数量。