目录
前言
时光荏苒,四个月的实习生活转瞬即逝。这段时间里,我经历了开心与痛苦交织的成长,收获了技术上的进步、心态上的成熟以及对语音信号处理和驱动开发的深刻理解。以下是我在实习期间的工作总结与心得体会,希望对同样在信号处理和嵌入式开发领域探索的同行有所启发。
一、语音信号处理的深入学习
1. FFT处理的经验教训
在实习初期,我接触到了语音信号处理的核心技术——快速傅里叶变换(FFT)。虽然之前对FFT有一定了解,但实际操作中才发现细节的重要性。例如,在处理一段包含1000多点的音频数据时,我直接使用了256点的FFT,导致大部分音频数据被截断,进而影响了信噪比的计算结果。这个错误让我意识到,在进行FFT处理时,必须根据音频长度合理选择点数,确保数据的完整性。
2. 谱减法的正确理解
谱减法是我在实习中遇到的另一个挑战。最初,我误以为谱减法是简单的点对点相减,但在与AI工具交流和深入学习后,我发现谱减法实际上是一种基于增益的幅度调节方法。这个过程让我认识到,理论知识与实际应用之间存在差距,只有通过实践和查阅资料才能真正掌握技术的本质。
二、驱动开发的初探
由于之前没有接触过驱动开发,相关知识对我来说完全陌生。实习初期,W老师向我介绍了USB上行、下行以及DSP(数字信号处理器)的相关处理,包括HiFi4函数的使用。然而,第一次接触这些内容时,我完全摸不着头脑。
1. 板子测试与正弦波生成
在板子测试中,我需要实现录音、放音以及正弦波数组的生成。起初,我只是模仿现有代码,通过AI工具生成了一个正弦波数组,但对于如何通过USB接口播放,我毫无头绪。后来,在W老师的指导下,我学会了将正弦波信号保存为数组并通过DSP和USB播放的技巧。这一方法在后续的耳塞密闭性信号设计和扫频波设计中得到了广泛应用。
2. TEOAE激励信号的设计
TEOAE(瞬态诱发耳声发射)激励信号的设计是实习中的一大难点。激励信号分为正弦波和方波(Click)两种形式。由于缺乏经验,我在设计方波信号时遇到了不少问题,例如对48kHz采样率和256点每帧的设置感到困惑。AI工具提供的知识有时不够准确,让我一度怀疑自己的能力。
通过向L老师请教和观察W老师的验证过程,我逐渐理解了采样率、点数和帧的关系。例如,W老师在验证我的设计时,清晰地展示了如何通过实验确认信号的正确性,这让我茅塞顿开。此外,我还学会了在设计正弦波时避免“断帧”问题,并深入理解了点数、帧数与采样率之间的联系。这些经验让我意识到,实践与验证是学习的关键。
三、正弦波与滤波器的设计心得
1. 正弦波信号的设计
在正弦波信号设计中,我遇到了一些实际问题。例如,我曾限制信号播放时长为13秒,但实际播放时长总是不准确。通过与AI交流,我发现问题可能出在采样率和点数的设置上。在W老师的指导下,我学会了将正弦波信号保存为数组并通过DSP播放的技巧。此外,我还发现,采样率和点数通常由PCB板预先设定,设计信号时无需过多担心这些参数。
2. 滤波器的设计与验证
在设计耳塞密闭性检测的滤波器时,我学习了如何设置滤波器的阶数和频率范围。尽管Python中的滤波器操作相对简单,但我最初忽略了对滤波效果的验证,导致结果不符合预期。L老师教导我,设计滤波器后必须通过实验验证其效果。例如,我发现音频时长过短(仅32点)会导致滤波效果不佳。此外,在正弦波设计中,L老师还建议将窗函数的值保存为数组,直接相乘以降低计算复杂度,这一技巧让我受益匪浅。
四、键值设置与循环思想
在DSP开发中,我还接触到了键值设置,用于通过按键控制信号播放。虽然这一部分由学长完成,但我在学习过程中了解了键值循环的设计思想。最初,我认为键值只需设置为0和1,后来学长提出将键值设计为0、1、2、3的循环模式,这种方法更加灵活,适用于多种场景。
五、PC端的信号处理
在PC端,我完成了点对点信号叠加、声压级计算以及信噪比计算等任务。这些工作让我对声压级等陌生概念有了初步了解。通过阅读文献和与AI交流,我逐渐掌握了相关知识,并成功计算了耳机密闭性的指标。这些任务不仅提升了我的编程能力,也让我学会了如何通过查阅资料解决实际问题。
六、心态与成长
这四个月的实习充满了挑战,有时甚至让我感到痛苦,想要放弃。然而,正如古人所说:“故余虽愚,卒获有所闻。”通过不断学习和实践,我逐渐克服了困难,收获了技术上的进步和心态上的成熟。实习让我明白,技术学习不仅是理论的积累,更是实践与反思的过程。
七、总结
总的来说,这次实习让我在语音信号处理、驱动开发和嵌入式系统设计方面有了长足的进步。从最初的懵懂到逐渐上手,我深刻体会到学习新知识需要勇气、耐心和持续的努力。希望我的经验能为其他初学者提供参考,也期待未来在信号处理和嵌入式开发领域继续成长!
同样很感谢在学习的过程中,学长以及各位老师的指导和帮助!