Pytanie:Czy można wykorzystywać dane stereo i szyfrować wiadomości głosowe za pomocą plików dźwiękowych WAV w programie LTspice?
Odpowiedź: Oczywiście. Ten RAQ (artykuł z "Rzadko zadawanych pytań" - Rarely Asked Questions - przyp. red.) ma za zadanie objaśnić, jak używać plików WAV w programie LTspice zarówno z wykorzystaniem audio stereo, jak i większej liczby kanałów.
LTspice może być używany do generowania plików WAV jako danych wyjściowych z symulacji obwodu, a także może importować pliki WAV w celu generacji sygnału wzbudzającego do symulacji obwodu. W dokumentacji dokładnie opisano, w jaki sposób możliwe jest wykorzystanie monofonicznych plików WAV, jako dane wejściowe w LTspice i to, że LTspice może służyć do generowania plików WAV z swojego wyjścia. W poniższym artykule szczegółowo opisano, jak używać plików WAV audio w LTspice z mniej znaną składnią, co pozwala na wykorzystanie plików zarówno stereofonicznych, jak i wielokanałowych.
Rys.1. W tej symulacji fala sinusoidalna
1 kHz jest przełączana w dwu-
sekundowych odstępach między CH1
i CH2. Wynikowy sygnał, w postaci dwóch
kanałów, jest eksportowany
do pliku audio WAV. LTspice ma wiele supermocy, ale obsługa plików audio jest jednym z bardziej imponujących talentów. Chociaż fascynujące jest obserwowanie, jak obwód ożywa na ekranie komputera, utworzenie pliku dźwiękowego, który można odtwarzać poza LTspice, umożliwia inżynierom wykorzystanie innego zmysłu do oceny symulacji – słuchu. Używanie monofonicznych plików audio WAV LTspice jest dobrze udokumentowane. Ten artykuł rozszerza wiedzę o sygnały stereo (lub mające więcej kanałów) i pokazuje, jak wyeksportować dane stereo i zaimportować je do LTspice za pomocą wielokanałowych plików WAV. W artykule zawarto także kilka wskazówek dotyczących plików WAV, które umożliwią czytelnikowi szersze wykorzystanie plików WAV w symulatorze.
Generowanie pliku stereo WAV
Zacznijmy od wytworzenia pliku fali stereo z sygnału monofonicznego. Na rysunku 1 zaprezentowano obwód, który generuje falę sinusoidalną o amplitudzie 1 V i częstotliwości 1 kHz, a następnie dzieli go na dwa kanały i na przemian przełącza sygnał między nimi - ton 1 kHz jest przełączany w 2-sekundowych odstępach pomiędzy CH1 i CH2.
Polecenie .wave „C: \ export.wav” 16 44,1k V (CH1) V (CH2) digitalizuje każdy kanał z 16-bitową rozdzielczością i częstotliwością próbkowania równą 44,1 kHz i przechowuje wynikowy plik dźwiękowy w C:\export.wav. W powyższym poleceniu każdy sygnał wymieniony po częstotliwości próbkowania staje się kolejnym odrębnym kanałem w pliku WAV. LTspice może przechowywać do 65 535 kanałów w jednym pliku WAV audio - wystarczy dołączyć sygnały do powyższego polecenia zgodnie z potrzebami.
Domyślnie poleceniem .wave LTspice zapisuje pierwszy wymieniony kanał jako lewy kanał audio, a drugi - jako prawy kanał audio. W takim przypadku, gdy export.wav jest odtwarzany przez odtwarzacz multimedialny, kanał CH1 zostanie odczytany, jako lewy kanał, a kanał CH2 będzie odczytany jako prawy, niezależnie od konwencji nazewnictwa węzłów obwodu. Zauważ, że domyślnie CH1 i CH2 są przechowywane odpowiednio, jako chan 0 i chan 1 w pliku .wav, co jest ważne dla odczytu tego pliku, co zostanie opisane poniżej. Wyeksportowany stereofoniczny plik audio można wykorzystać do stymulacji innego obwodu w LTSpice, na przykład takiego, jaki pokazano na rysunku 2. Wykorzystuje on dwa kanały z pliku export.wav jako wejścia sygnału.
Rys.3. Sygnał stereofoniczny z export.wav
używany jest jako wejście do układu
z rysunku 2. Na rysunku pokazano
konfigurację V1, by źródło to pobierało
wartości z kanału 0 tego pliku.Źródła napięcia V1 i V2 są zwykłymi źródłami napięcia, które skonfigurowano tak, by czytały dane z pliku WAV. Są one przypisywane poprzez przytrzymanie klawisza CTRL i kliknięcie prawym przyciskiem myszy na każdym ze źródeł, co uruchomi edytor atrybutów komponentów, jak pokazano na rysunku 3.
Jak wspomniano powyżej, LTspice, w jednym pliku WAV, można przechowywać do 65 535 osobnych kanałów - wystarczy dołączyć tyle kanałów, ile potrzeba na końcu polecenia .wave podczas jego generowania. Pamiętaj, że domyślnie LTspice nazywa pierwszy kanał Channel 0, następny nazywa się Channel 1 i tak dalej. W takim przypadku plik export.wav (wygenerowany przez symulację na rysunku 1) przechowuje napięcie V (CH1), jako kanał 0 i V(CH2), jako kanał 1. Aby odtwarzać te kanały za pomocą źródła napięcia, określ plik .wav i kanał w wierszu wartości źródła napięcia. W tym przypadku będzie to, odpowiednio:
Separacja kanałów audio
Rys.4. Lewy (żółty) kanał wykazuje
około 30% przesłuchu do kanału
prawego (niebieskiego) podczas odtwarzania
audio na laptopie.
Rys.6. Telefon późniejszej generacji
wykazuje znacznie lepszą jakość
odnośnie przesłuchu, zniekształceń
i amplitudy dźwięku.Teoretycznie odtwarzanie pliku export.wav przez odtwarzacz multimedialny powinno skutkować przełączaniem się między odtwarzaniem tonu 1 kHz całkowicie przez lewy głośnik przez dwie sekundy, a następnie przez prawy głośnik przez kolejne dwie sekundy. Niemniej jednak pełna separacja stereo nie jest gwarantowana i zależy to, od jakości odtwarzacza multimedialnego używanego podczas odtwarzania. Odtwarzanie pliku export.wav na typowym laptopie pokazało, że około 30% sygnału z lewego kanału pojawia się na prawym kanale podczas pomiaru na oscyloskopie, jak pokazano na rysunku 4.
Rys.5. Dźwięk z telefonu komórkowego
z ok. 2000 roku nie wykazywał przesłuchu,
ale zauważalne były zniekształcenia przy
pełnej głośności.Odtworzenie tego samego pliku na dosyć starym telefonie komórkowym dało wyższy poziom separacji kanałów, bez widocznego przesłuchu, ale za to z pewnym poziomem zniekształceń przy pełnej głośności, jak widzimy na rysunku 5.
Powtórzenie eksperymentu na telefonie nowej generacji (z 2018 roku) nie wykazało zauważalnego przesłuchu ani zbyt dużych zniekształceń dla pełnego sygnału o amplitudzie 1 V. Wyniki pokazano na oscylogramie znajdującym się na rysunku 6.
Uwaga: Wszystkie oscylogramy przedstawiono w tej samej skali. Oscyloskop skonfigurowany był na 500 mV na działkę.
Ten sam plik został użyty na wszystkich trzech platformach, co pokazuje, że LTspice produkuje plik WAV z pełną separacją kanałów, ale wynikowe odtwarzanie zależy w dużej mierze od jakości wykorzystanego odtwarzacza audio.
Szyfrowanie głosu
Obwód na rysunku 7 pokazuje podstawową metodę szyfrowania głosu, w której sygnał audio jest szyfrowany za pomocą losowej sekwencji liczb, a następnie deszyfrowany.
Plik voice.wav zawiera oryginalny sygnał audio. Arkusz Excela wykorzystany jest do wygenerowania sekwencji liczb losowych, które zmieniać się będą w sygnale z okresem 100 mikrosekund. Rezultat jest kopiowany do pliku tekstowego random.txt, który wczytywany będzie do programu. Część pliku z sekwencją liczb losowych pokazano na [/b]rysunku 8[/b].
Plik ten służy do generowania losowo zmieniającego się napięcia, V(RAND), przy użyciu liniowego źródła napięcia (PWL) w LTspice, które korzysta z wartości zapisanych w pliku random.txt.
V(RAND) dodawane jest do sygnału głosowego za pomocą behawioralnego źródła napięcia B1. Dane wyjściowe są następnie mnożone przez V(RAND), a wynik jest zapisywany do pliku encrypt.wav. Słuchanie encrypt.wav nie pozwala na usłyszenie oryginalnego sygnału audio - dźwięk ten jest ledwo lub wcale niesłyszalny.
Na rysunku 9 pokazano oryginalny sygnał audio (głos), zaszyfrowany głos i odszyfrowany sygnały audio. Wykres wygenerowany został w LTspice.
Drugie behawioralne źródło napięcia zostało następnie użyte do odszyfrowania oryginalnego sygnału audio, a wynik został przesłany do pliku decrypt.wav.
Tworzenie pliku WAV ze źródła napięcia różnicowego
Składnia polecenia .wave nie pozwala na digitalizację napięć różnicowych. Można to jednak łatwo rozwiązać za pomocą behawioralnego źródła napięcia, jak pokazano na rysunku 10.
Behawioralne źródło napięcia B1 w układzie po lewej stronie generuje napięcie równe V (OUT1) - V (OUT2). Sygnału tego można następnie użyć w poleceniu .wave w zwykły sposób, jak pokazano na rysunku 10. Wynika to z faktu, że zmienne w funkcji behawioralnego źródła napięcia mogą obejmować dowolne sygnały - napięcie lub prąd w obwodzie i można nimi manipulować za pomocą dowolnej funkcji matematycznej dostępnej w LTspice. Wynik można następnie wyeksportować do pliku WAV audio LTspice w normalny sposób, jak każdy inny sygnał.
Podsumowanie
LTspice to potężny symulator układów elektrycznych, ale jego wyniki nie muszą być prezentowane i analizowane tylko w LTspice. Za pomocą polecenia .wave program ten może importować, manipulować i eksportować pliki audio w formacie wav, do dalszego odtwarzania w dowolnym odtwarzaczu multimedialnym.
Takie podejście ma szereg zalet. Nie tylko pozwala na wygodne zapisywanie danych wyjściowych i przygotowywanie wzbudzeń dla symulowanych. Można wykorzystać także LTSpice jako swojego rodzaju generator arbitralny – wygenerowany sygnał można następnie odtworzyć, ale zamiast kierować go do słuchawek czy głośników, można go podłączyć do analizowanego, fizycznego układu. Nie jest to oczywiście precyzyjne źródło sygnału i nie zastąpi porządnego generatora laboratoryjnego, ale przy jego braku, okazać się może zbawieniem dla np. hobbystów.
Źródło: https://www.analog.com/en/analog-dialogue/raqs/raq-issue-175.html
Odpowiedź: Oczywiście. Ten RAQ (artykuł z "Rzadko zadawanych pytań" - Rarely Asked Questions - przyp. red.) ma za zadanie objaśnić, jak używać plików WAV w programie LTspice zarówno z wykorzystaniem audio stereo, jak i większej liczby kanałów.
LTspice może być używany do generowania plików WAV jako danych wyjściowych z symulacji obwodu, a także może importować pliki WAV w celu generacji sygnału wzbudzającego do symulacji obwodu. W dokumentacji dokładnie opisano, w jaki sposób możliwe jest wykorzystanie monofonicznych plików WAV, jako dane wejściowe w LTspice i to, że LTspice może służyć do generowania plików WAV z swojego wyjścia. W poniższym artykule szczegółowo opisano, jak używać plików WAV audio w LTspice z mniej znaną składnią, co pozwala na wykorzystanie plików zarówno stereofonicznych, jak i wielokanałowych.

Rys.1. W tej symulacji fala sinusoidalna
1 kHz jest przełączana w dwu-
sekundowych odstępach między CH1
i CH2. Wynikowy sygnał, w postaci dwóch
kanałów, jest eksportowany
do pliku audio WAV.
Generowanie pliku stereo WAV
Zacznijmy od wytworzenia pliku fali stereo z sygnału monofonicznego. Na rysunku 1 zaprezentowano obwód, który generuje falę sinusoidalną o amplitudzie 1 V i częstotliwości 1 kHz, a następnie dzieli go na dwa kanały i na przemian przełącza sygnał między nimi - ton 1 kHz jest przełączany w 2-sekundowych odstępach pomiędzy CH1 i CH2.
Polecenie .wave „C: \ export.wav” 16 44,1k V (CH1) V (CH2) digitalizuje każdy kanał z 16-bitową rozdzielczością i częstotliwością próbkowania równą 44,1 kHz i przechowuje wynikowy plik dźwiękowy w C:\export.wav. W powyższym poleceniu każdy sygnał wymieniony po częstotliwości próbkowania staje się kolejnym odrębnym kanałem w pliku WAV. LTspice może przechowywać do 65 535 kanałów w jednym pliku WAV audio - wystarczy dołączyć sygnały do powyższego polecenia zgodnie z potrzebami.
Domyślnie poleceniem .wave LTspice zapisuje pierwszy wymieniony kanał jako lewy kanał audio, a drugi - jako prawy kanał audio. W takim przypadku, gdy export.wav jest odtwarzany przez odtwarzacz multimedialny, kanał CH1 zostanie odczytany, jako lewy kanał, a kanał CH2 będzie odczytany jako prawy, niezależnie od konwencji nazewnictwa węzłów obwodu. Zauważ, że domyślnie CH1 i CH2 są przechowywane odpowiednio, jako chan 0 i chan 1 w pliku .wav, co jest ważne dla odczytu tego pliku, co zostanie opisane poniżej. Wyeksportowany stereofoniczny plik audio można wykorzystać do stymulacji innego obwodu w LTSpice, na przykład takiego, jaki pokazano na rysunku 2. Wykorzystuje on dwa kanały z pliku export.wav jako wejścia sygnału.

Rys.3. Sygnał stereofoniczny z export.wav
używany jest jako wejście do układu
z rysunku 2. Na rysunku pokazano
konfigurację V1, by źródło to pobierało
wartości z kanału 0 tego pliku.
Jak wspomniano powyżej, LTspice, w jednym pliku WAV, można przechowywać do 65 535 osobnych kanałów - wystarczy dołączyć tyle kanałów, ile potrzeba na końcu polecenia .wave podczas jego generowania. Pamiętaj, że domyślnie LTspice nazywa pierwszy kanał Channel 0, następny nazywa się Channel 1 i tak dalej. W takim przypadku plik export.wav (wygenerowany przez symulację na rysunku 1) przechowuje napięcie V (CH1), jako kanał 0 i V(CH2), jako kanał 1. Aby odtwarzać te kanały za pomocą źródła napięcia, określ plik .wav i kanał w wierszu wartości źródła napięcia. W tym przypadku będzie to, odpowiednio:
Code:
(CH1): Value wavefile=“C:\export.wav” chan=0
(CH2): Value wavefile=“C:\export.wav” chan=1
Separacja kanałów audio

Rys.4. Lewy (żółty) kanał wykazuje
około 30% przesłuchu do kanału
prawego (niebieskiego) podczas odtwarzania
audio na laptopie.

Rys.6. Telefon późniejszej generacji
wykazuje znacznie lepszą jakość
odnośnie przesłuchu, zniekształceń
i amplitudy dźwięku.

Rys.5. Dźwięk z telefonu komórkowego
z ok. 2000 roku nie wykazywał przesłuchu,
ale zauważalne były zniekształcenia przy
pełnej głośności.
Powtórzenie eksperymentu na telefonie nowej generacji (z 2018 roku) nie wykazało zauważalnego przesłuchu ani zbyt dużych zniekształceń dla pełnego sygnału o amplitudzie 1 V. Wyniki pokazano na oscylogramie znajdującym się na rysunku 6.
Uwaga: Wszystkie oscylogramy przedstawiono w tej samej skali. Oscyloskop skonfigurowany był na 500 mV na działkę.
Ten sam plik został użyty na wszystkich trzech platformach, co pokazuje, że LTspice produkuje plik WAV z pełną separacją kanałów, ale wynikowe odtwarzanie zależy w dużej mierze od jakości wykorzystanego odtwarzacza audio.
Szyfrowanie głosu
Obwód na rysunku 7 pokazuje podstawową metodę szyfrowania głosu, w której sygnał audio jest szyfrowany za pomocą losowej sekwencji liczb, a następnie deszyfrowany.
Plik voice.wav zawiera oryginalny sygnał audio. Arkusz Excela wykorzystany jest do wygenerowania sekwencji liczb losowych, które zmieniać się będą w sygnale z okresem 100 mikrosekund. Rezultat jest kopiowany do pliku tekstowego random.txt, który wczytywany będzie do programu. Część pliku z sekwencją liczb losowych pokazano na [/b]rysunku 8[/b].
Plik ten służy do generowania losowo zmieniającego się napięcia, V(RAND), przy użyciu liniowego źródła napięcia (PWL) w LTspice, które korzysta z wartości zapisanych w pliku random.txt.
V(RAND) dodawane jest do sygnału głosowego za pomocą behawioralnego źródła napięcia B1. Dane wyjściowe są następnie mnożone przez V(RAND), a wynik jest zapisywany do pliku encrypt.wav. Słuchanie encrypt.wav nie pozwala na usłyszenie oryginalnego sygnału audio - dźwięk ten jest ledwo lub wcale niesłyszalny.
Na rysunku 9 pokazano oryginalny sygnał audio (głos), zaszyfrowany głos i odszyfrowany sygnały audio. Wykres wygenerowany został w LTspice.
Drugie behawioralne źródło napięcia zostało następnie użyte do odszyfrowania oryginalnego sygnału audio, a wynik został przesłany do pliku decrypt.wav.
Tworzenie pliku WAV ze źródła napięcia różnicowego
Składnia polecenia .wave nie pozwala na digitalizację napięć różnicowych. Można to jednak łatwo rozwiązać za pomocą behawioralnego źródła napięcia, jak pokazano na rysunku 10.
Behawioralne źródło napięcia B1 w układzie po lewej stronie generuje napięcie równe V (OUT1) - V (OUT2). Sygnału tego można następnie użyć w poleceniu .wave w zwykły sposób, jak pokazano na rysunku 10. Wynika to z faktu, że zmienne w funkcji behawioralnego źródła napięcia mogą obejmować dowolne sygnały - napięcie lub prąd w obwodzie i można nimi manipulować za pomocą dowolnej funkcji matematycznej dostępnej w LTspice. Wynik można następnie wyeksportować do pliku WAV audio LTspice w normalny sposób, jak każdy inny sygnał.
Podsumowanie
LTspice to potężny symulator układów elektrycznych, ale jego wyniki nie muszą być prezentowane i analizowane tylko w LTspice. Za pomocą polecenia .wave program ten może importować, manipulować i eksportować pliki audio w formacie wav, do dalszego odtwarzania w dowolnym odtwarzaczu multimedialnym.
Takie podejście ma szereg zalet. Nie tylko pozwala na wygodne zapisywanie danych wyjściowych i przygotowywanie wzbudzeń dla symulowanych. Można wykorzystać także LTSpice jako swojego rodzaju generator arbitralny – wygenerowany sygnał można następnie odtworzyć, ale zamiast kierować go do słuchawek czy głośników, można go podłączyć do analizowanego, fizycznego układu. Nie jest to oczywiście precyzyjne źródło sygnału i nie zastąpi porządnego generatora laboratoryjnego, ale przy jego braku, okazać się może zbawieniem dla np. hobbystów.
Źródło: https://www.analog.com/en/analog-dialogue/raqs/raq-issue-175.html
Cool? Ranking DIY