機器人/元件/音訊
機器人的音訊元件是指那些允許其發出聲音的部件,無論是出於娛樂目的還是為了傳遞資訊。
這可以透過簡單的音效晶片來實現:廉價的積體電路,允許使用很少的外部元件播放特定聲音。這些通常用於玩具。
其他方法包括儲存樣本的儲存晶片、DAC 和放大器、MP3 播放器或行動式 PC 上的語音合成軟體。
生成簡單的聲音很容易。你只需要一個在 20 到 20.000Hz 範圍內的振盪器、一個放大器和一個揚聲器。這樣的電路可以生成人類可以聽到的任何音調。透過改變振盪器的頻率,你可以改變發出的音調。Qbasic 有一個命令可以做到這一點:sound。Sound 允許你指定一些引數,其中最重要的引數是頻率。透過隨時間改變這個頻率,可以產生簡單的音效。
一個更好的生成聲音的方法是取樣
聲波的強度隨時間變化。麥克風(帶前置放大器)可以將這種強度轉換為具有相同形狀的電訊號。模數轉換器 (ADC) 然後可以將這個電訊號轉換為數字。然而,這不是一個連續的過程,而是一個離散過程,這意味著每隔 x 毫秒測量訊號的幅度(電壓或電流)並將其轉換為數字。這將產生原始訊號的數字近似值。這個近似的效果取決於訊號的取樣頻率。當然,更多的樣本意味著佔用更多的儲存空間,也需要更昂貴的硬體。ADC 的價格取決於精度(多少位表示樣本)以及它每秒可以採集多少個樣本(還有更多引數,但這些引數對於本書來說基本超出範圍)。
現在你有一個數字陣列。當然,現在你想把這個陣列恢復成聲音。這是透過數模轉換器 (DAC) 完成的。這個部分將數字值轉換回電訊號。在 DAC 之後,有一個濾波器來平滑波形,一個放大器和一個揚聲器。以與取樣相同的速率,將陣列樣本逐個饋送到 DAC,你就會聽到原始聲音。
這種方法的優點是它的(相對)簡單。缺點是它需要大量的記憶體。
更高階的方法是儲存編碼聲音(例如 MP3)。這更復雜,因為它需要解碼器,但是如今已經存在帶有完整 MP3 解碼器的積體電路,這使得它成為一個值得關注的方法。
本節應涵蓋這些電路和積體電路的一些基本資訊
當需要放大幅度很小的訊號時,使用前置放大器。前置放大器非常線性(它們在訊號中造成的失真非常小),但效率很低。它們放大來自例如麥克風的訊號,該訊號通常具有 1mV 或更小的幅度,放大到更實用的 100mV 或更高的幅度。由於它們效率如此低下,前置放大器電路不用於功率放大器。
放大器允許低功率訊號透過具有顯著功率的揚聲器輸出。放大器通常允許一些訊號失真,以便保持功率。(除了 A 類放大器,它們消耗大量功率,但失真很小)。
放大器可以使用積體電路、分立元件構建,也可以作為模組購買。
模數轉換器(簡稱: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 具有特定的精度,以位表示,並且需要一些時間來進行轉換。
振盪器產生重複的訊號。這個訊號可以是幾乎任何你想要的形狀,但最常見的形狀是正弦波、方波、鋸齒波和三角波,以及許多不同形式的脈衝。
有許多專門用於產生音效的積體電路。
- 振盪器:這些輸出具有使用者定義頻率的訊號。透過改變頻率,你可以產生不同的音效。
- 聲音晶片:這些輸出特定的音效(例如馬達聲)。這些是不可改變的。
- 聲音錄製和回放晶片:這些可以錄製短時間的聲音(有些可以錄製多個不同的樣本)並可以之後回放。