LTspice音訊WAV檔:使用身歷聲和加密語音訊息
作者: ADI資深現場應用工程師Simon Bramble
問題:
請問能否透過LTspice音訊WAV檔利用身歷聲資料和加密語音訊息?

答案:
如果音樂是愛情的食糧,那麼就模擬吧!
本文將為您解釋如何使用LTspice®音訊WAV檔產生身歷聲語法(以及更高的通道計數)。
LTspice可用於產生WAV檔來作為電路模擬的輸出,也可用於導入WAV檔來激勵電路模擬。有大量的文檔記載了單聲道WAV檔可用作LTspice中的輸入,而LTspice可用於產生WAV輸出。本文將詳細說明如何使用LTspice音訊WAV檔產生不太為人所熟知的身歷聲語法(以及更高的通道計數)。
LTspice擁有許多超級功能,但它處理音訊檔的能力,則是其令人印象較深刻的功能之一。雖然在電腦螢幕上看到逼真的電路令人著迷,但是創建一個可以在LTspice之外播放的音效檔則能夠讓工程師以另一種感測方式來評估模擬。使用 單聲道 LTspice音訊WAV檔 的相關文檔非常完備。本文對身歷聲(或更多通道)將進行詳細討論,並說明如何從LTspice音訊WAV檔匯出身歷聲資料,以及如何將身歷聲資料導入LTspice音訊WAV檔。本文同時也將闡述WAV檔的一些使用技巧和訣竅,使讀者能夠進一步利用WAV檔。
產生身歷聲WAV檔
首先,從單聲道訊號產生身歷聲波形檔。圖1顯示的電路產生1 V、1 kHz正弦波,並將其分成兩個通道,從而在兩個通道之間交替傳輸訊號——在CH1和CH2之間以2秒間隔切換1 kHz訊號音。

指令.wave "C:\export.wav" 16 44.1k V(CH1) V(CH2)以16位解析度對每個通道進行數位化處理,以44.1 kSPS速率進行採樣,並將產生的音訊資料儲存在C:\export.wav中。在上述指令中,在採樣速率之後列出的每個訊號在WAV檔中都產生自己的通道資料。LTspice可在單個LTspice音訊WAV檔中儲存多達65,535個通道——只需根據需要將訊號附加到上述指令即可。
在預設情況下,LTspice的.wave指令將列出的第一個通道資料另存為左音訊通道,將列出的第二個通道資料另存為右音訊通道。在這種情況下,當透過媒體播放機播放export.wav時,無論電路節點指令規則如何,CH1都將被讀取為左通道,CH2將被讀取為右通道。請注意,在預設情況下,CH1和CH2在.wav檔中分別儲存為通道0和通道1,這對於讀取下面討論的文件非常重要。
匯出的這個身歷聲音訊檔可用於激勵圖2所示的另一個電路,該電路使用export.wav中的兩個通道,作為訊號輸入。

電壓源V1和V2照常放置,然後按住CTRL鍵並按右鍵每個電壓源,顯示元件屬性編輯器(如圖3所示),來分配export.wav中的電壓訊號。

如上所述,首次產生LTspice音訊WAV檔時,多達65,535個通道可數位化為一個WAV檔——只需在.wave指令的末尾附加任意多個通道即可。請記住,在預設情況下,LTspice將第一個通道命名為通道0,將下一個通道命名為通道1,以此類推。在這種情況下,由圖1模擬產生的export.wav將電壓V(CH1) 儲存為通道0,將V(CH2) 儲存為通道1。要使用電壓源播放這些通道,請在該電壓源的值行中指定.wav文件和通道。這種情況下:
- 要指示V1重播圖1的V(CH1): wavefile="C:\export.wav" chan=0
- 要指示V2重播圖1的V(CH2): wavefile="C:\export.wav" chan=1
音訊分離
從理論上講,透過媒體播放機播放export.wav應在完全透過左揚聲器(或耳機)播放1 kHz訊號音2秒鐘和透過右揚聲器播放2秒鐘之間切換。儘管如此,仍然無法保證身歷聲完全分離,而這取決於播放過程中所使用之媒體播放機的品質。
透過筆記型電腦播放export.wav顯示,在示波器上測量時約30%的左通道出現在右通道上,如圖4所示。

在(2000年時代)手機上播放相同的檔會得到一個更加分離的結果,顯示沒有可感知的串擾,但是在最大音量下會有輕微的失真,如圖5所示。

在後來2018年時代的手機上重複這個實驗,結果顯示沒有可感知的串擾,但有一個完整的1 V峰值訊號和很小的失真,如圖6所示。請注意,所繪示波器曲線圖的靈敏度為500 mV/div。

在所有三個平台上使用相同的檔,結果顯示LTspice可以產生能夠完全分離的WAV檔,但最終的重播在很大程度上取決於播放機音訊級的品質。
語音加密
圖7中的電路顯示了語音加密的基本方法,就是使用亂數序列加密音訊訊號,然後解密。

文件voice.wav包含原始音訊。Excel試算表用於產生變化週期為100 µs的亂數序列。結果複製到名為random.txt的文字檔中。random.txt的摘錄如圖8所示。

該檔用於使用LTspice中的 分段線性(PWL)電壓源 產生隨機變化的電壓V(RAND)。
使用行為電壓源B1將V(RAND)添加到語音訊號中。然後將輸出乘以V(RAND),並將結果發送到encrypt.wav文件。當收聽encrypt.wav時發現,原始音訊幾乎無法感知。
圖9顯示了LTspice圖視窗的原始語音、加密語音和解密語音訊號。

然後使用第二個行為電壓源解密原始音訊訊號,並將結果發送到decrypt.wav文件。
從差分電壓源產生WAV檔
.wave指令的語法不允許數位化差分電壓。但是,使用行為電壓源(B1)可輕鬆解決此問題,如圖10所示。

行為電壓源(B1)輸出電壓等於V(OUT1) – V(OUT2),這可以按常用方式在.wave指令中使用,如圖所示。
事實上,行為電壓源函數中的變數可以包括電路中的任何電壓或電流,並且可以使用LTspice的任何數學函數控制這些變數。然後,可以通過正常方式將最終結果匯出到LTspice音訊WAV檔。
LTspice為一個功能強大的模擬器,但其模擬結果不必包含在LTspice內。使用.wave指令,LTspice可以導入、操作和匯出音訊檔,以便在媒體播放機上播放。