LTspice音訊WAV檔:使用身歷聲和加密語音訊息

作者: Simon Bramble,ADI資深現場應用工程師

請問能否透過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顯示的電路產生1V、1kHz正弦波,並將其分成兩個通道,從而在兩個通道之間交替傳輸訊號——在CH1和CH2之間以2秒間隔切換1kHz訊號音。

圖1 在本模擬中,CH1和CH2之間以2秒間隔切換1kHz正弦波。產生的兩通道訊號匯出到一個音訊WAV檔中。

指令.wave “C:\export.wav” 16 44.1k V(CH1) V(CH2)以16位解析度對每個通道進行數位化處理,以44.1kSPS速率進行採樣,並將產生的音訊資料儲存在C:\export.wav中。在上述指令中,在採樣速率之後列出的每個訊號在WAV檔中都產生自己的通道資料。LTspice可在單個LTspice音訊WAV檔中儲存多達65,535個通道——只需根據需要將訊號附加到上述指令即可。

在預設情況下,LTspice的.wave指令將列出的第一個通道資料另存為左音訊通道,將列出的第二個通道資料另存為右音訊通道。在這種情況下,當透過媒體播放機播放export.wav時,無論電路節點指令規則如何,CH1都將被讀取為左通道,CH2將被讀取為右通道。請注意,在預設情況下,CH1和CH2在.wav檔中分別儲存為通道0和通道1,這對於讀取下面討論的文件非常重要。

匯出的這個身歷聲音訊檔可用於激勵圖2所示的另一個電路,該電路使用export.wav中的兩個通道,作為訊號輸入。

圖2 export.wav中的兩個身歷聲通道用於激勵兩個獨立電路。

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

圖3 export.wav中的身歷聲訊號用作圖2電路的輸入。這是V1的分配,值設定為從export.wav中拉出通道0。

如上所述,首次產生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應在完全透過左揚聲器(或耳機)播放1kHz訊號音2秒鐘和透過右揚聲器播放2秒鐘之間切換。儘管如此,仍然無法保證身歷聲完全分離,而這取決於播放過程中所使用之媒體播放機的品質。

透過筆記型電腦播放export.wav顯示,在示波器上測量時約30%的左通道出現在右通道上,如圖4所示。

圖4 左(黃色)通道顯示,在筆記型電腦上播放時約30%饋入右(藍色)通道。

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

圖5 2000年的手機顯示沒有串擾,但在最大音量下會失真。

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

圖6 後來一代手機在串擾、失真和振幅方面表現出更好的性能。

在所有三個平台上使用相同的檔,結果顯示LTspice可以產生能夠完全分離的WAV檔,但最終的重播在很大程度上取決於播放機音訊級的品質。

語音加密

圖7中的電路顯示了語音加密的基本方法,就是使用亂數序列加密音訊訊號,然後解密。

圖7 使用隨機電壓源加密/解密音訊檔。

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

圖8 使用Excel產生並保存到文字檔中的隨機電壓。

該檔用於使用LTspice中的分段線性(PWL)電壓源產生隨機變化的電壓V(RAND)。

使用行為電壓源B1將V(RAND)添加到語音訊號中。然後將輸出乘以V(RAND),並將結果發送到encrypt.wav文件。當收聽encrypt.wav時發現,原始音訊幾乎無法感知。

圖9顯示了LTspice圖視窗的原始語音、加密語音和解密語音訊號。

圖9 原始、加密和解密語音訊號的輸出。

然後使用第二個行為電壓源解密原始音訊訊號,並將結果發送到decrypt.wav文件。

從差分電壓源產生WAV檔

.wave指令的語法不允許數位化差分電壓。但是,使用行為電壓源(B1)可輕鬆解決此問題,如圖10所示。

圖10 從差分電壓創建WAV檔。

行為電壓源(B1)輸出電壓等於V(OUT1)-(OUT2),這可以依常用方式在.wave指令中使用。事實上,行為電壓源函數中的變數可以包括電路中的任何電壓或電流,並且可以使用LTspice的任何數學函數控制這些變數。然後,可以透過正常方式將最終結果匯出到LTspice音訊WAV檔。

LTspice為一個功能強大的模擬器,但其模擬結果不必包含在LTspice內。使用.wave指令,LTspice可以導入、操作和匯出音訊檔,以便在媒體播放機上播放。

 

 

發表評論