跳转到内容

机器人/组件/音频

来自维基教科书,自由的教科书,面向自由的世界

机器人的音频组件是指那些允许其发出声音的部件,无论是出于娱乐目的还是为了传递信息。

这可以通过简单的音效芯片来实现:廉价的集成电路,允许使用很少的外部组件播放特定声音。这些通常用于玩具。

其他方法包括存储样本的存储芯片、DAC 和放大器、MP3 播放器或便携式 PC 上的语音合成软件。

理论基础

[编辑 | 编辑源代码]

生成简单的声音很容易。你只需要一个在 20 到 20.000Hz 范围内的振荡器、一个放大器和一个扬声器。这样的电路可以生成人类可以听到的任何音调。通过改变振荡器的频率,你可以改变发出的音调。Qbasic 有一个命令可以做到这一点:sound。Sound 允许你指定一些参数,其中最重要的参数是频率。通过随时间改变这个频率,可以产生简单的音效。

一个更好的生成声音的方法是采样

声波的强度随时间变化。麦克风(带前置放大器)可以将这种强度转换为具有相同形状的电信号。模数转换器 (ADC) 然后可以将这个电信号转换为数字。然而,这不是一个连续的过程,而是一个离散过程,这意味着每隔 x 毫秒测量信号的幅度(电压或电流)并将其转换为数字。这将产生原始信号的数字近似值。这个近似的效果取决于信号的采样频率。当然,更多的样本意味着占用更多的存储空间,也需要更昂贵的硬件。ADC 的价格取决于精度(多少位表示样本)以及它每秒可以采集多少个样本(还有更多参数,但这些参数对于本书来说基本超出范围)。

现在你有一个数字数组。当然,现在你想把这个数组恢复成声音。这是通过数模转换器 (DAC) 完成的。这个部分将数字值转换回电信号。在 DAC 之后,有一个滤波器来平滑波形,一个放大器和一个扬声器。以与采样相同的速率,将数组样本逐个馈送到 DAC,你就会听到原始声音。

这种方法的优点是它的(相对)简单。缺点是它需要大量的内存。

更高级的方法是存储编码声音(例如 MP3)。这更复杂,因为它需要解码器,但是如今已经存在带有完整 MP3 解码器的集成电路,这使得它成为一个值得关注的方法。

不同的组件

[编辑 | 编辑源代码]

本节应涵盖这些电路和集成电路的一些基本信息

前置放大器

[编辑 | 编辑源代码]

当需要放大幅度很小的信号时,使用前置放大器。前置放大器非常线性(它们在信号中造成的失真非常小),但效率很低。它们放大来自例如麦克风的信号,该信号通常具有 1mV 或更小的幅度,放大到更实用的 100mV 或更高的幅度。由于它们效率如此低下,前置放大器电路不用于功率放大器。

放大器

[编辑 | 编辑源代码]

放大器允许低功率信号通过具有显著功率的扬声器输出。放大器通常允许一些信号失真,以便保持功率。(除了 A 类放大器,它们消耗大量功率,但失真很小)。

放大器可以使用集成电路、分立元件构建,也可以作为模块购买。

模数转换器 (ADC)

[编辑 | 编辑源代码]

模数转换器(简称:ADC)将模拟信号转换为数字值。ADC 具有特定的精度,以表示,例如 8 位、10 位和 16 位。这意味着 ADC 将拥有一个具有 8 位、10 位和 16 位的二进制数。这个二进制数所表示的最高值对应于施加到 ADC 特殊输入端的参考电压。例如,如果我们有一个 8 位 ADC,并且我们在该特殊输入端施加 5V,那么值 255 表示 5V。它的精度将是 1/255 * 5 V 或 0.02V。每次我们向二进制数加 1,表示的电压就会增加 0.02V。
关于 ADC 的另一个要点是它的时序。ADC 需要一些时间来进行转换。它们的速度越快,它们对信号的数字化就越精确(换句话说,信号的频率越高),并且它们的价格就越高。

数模转换器

[编辑 | 编辑源代码]

DAC 将数字值转换为电压电平。它可以使用参考电压或“轨到轨”工作,这意味着其最高数字输入值表示的电压电平(几乎)等于 DAC 的电源电压。与 ADC 类似,DAC 具有特定的精度,以表示,并且需要一些时间来进行转换。

振荡器

[编辑 | 编辑源代码]

振荡器产生重复的信号。这个信号可以是几乎任何你想要的形状,但最常见的形状是正弦波、方波、锯齿波和三角波,以及许多不同形式的脉冲。

专用声音芯片

[编辑 | 编辑源代码]

有许多专门用于产生音效的集成电路。

  • 振荡器:这些输出具有用户定义频率的信号。通过改变频率,你可以产生不同的音效。
  • 声音芯片:这些输出特定的音效(例如马达声)。这些是不可改变的。
  • 声音录制和回放芯片:这些可以录制短时间的声音(有些可以录制多个不同的样本)并可以之后回放。
华夏公益教科书