Konwersja plików audio na potrzeby przetworników cyfrowo-analogowych
Odtwarzanie danych audio na mikrokontrolerze z pominięciem obsługi systemu plików i formatów plików audio powoduje iż musimy dane odpowiednio przygotować. Za pomocą narzędzi konsolowych i Pythona można skonwertować klip audio do numerycznego formatu gotowego do użycia.
Celem takiej reprezentacji danych audio jest chęć pominięcia obsługi systemu plików i kart SD w projekcie (który zjada trochę zasobów i nie zawsze jest pożądany). Nie są potrzebne też biblioteki obsługujące konwersje plików wave na sygnał wysyłany do przetwornika.
Konwersja do 8 bitowego klipu Wave
Mając do dyspozycji 8 bitowy DAC dane muszą być skonwertowane do 8 bitowego formatu. Mając 16-bitowy DAC można spróbować zastosować również 16-bitowe dane. Do konwersji można użyć FFmpeg:
Jako plik wejściowy można użyć różnych formatów - obsługiwanych przez ffmpeg. Wyjściowy 8-bitowy plik wave będzie miał niższą jakość od oryginału. W zależności od poziomu głośności szumy mogą być bardzo wyraźne. Żeby je zredukować, czy nawet usunąć można podbić poziom głośności:
Gdzie 20dB
można dopasować wedle potrzeb. Wynikowy plik nie powinien mieć żadnych stałych i wyraźnych szumów. Ludzka mowa konwertuje się zazwyczaj dobrze, natomiast muzyka może mieć z tym problemy. Przykład poniżej.
Wyciąganie danych numerycznych
Mając 8-bitowy plik audio można wyciągnąć jego dane jako listę 8-bitowych liczb, które bezpośrednio można wysyłać na DACa. Można to zrobić w Pythonie za pomocą biblioteki scipy:
import scipy.io.wavfile
framerate, data = scipy.io.wavfile.read('output2.wav')
print(list(data))
Otrzymają listę można wrzucić np. na ESP32 (przykład). Warto listę złamać na wiele linii, gdyż jedna bardzo długa linia sprawi ogromne problemy większości edytorom kodu.
Płytki ESP32 mają spory flash (4-16MB) więc dość duże tablice powinny bez problemu się zmieścić. Jeżeli danych jest za dużo, lub jeżeli chcemy system z obsługą zapisu w czasie działania mikrokontrolera - potrzeby będzie dodatkowych chip flash na dane audio.
Powiązane artykuły
- Odtwarzanie danych audio na mikrokontrolerach
- Odczyt i zapis danych na chipach flash dla mikrokontrolerów
- Energooszczędne wyświetlacze dla mikrokontrolerów
Comment article