ESP32-audioI2S
ESP32-audioI2S copied to clipboard
Interrupted Bluetooth Replay when using I2S to Bluetooth Module TSA5001
Hello Wolle!
I'm trying out this TSA5001 module. It converts an I2S stream directly to Bluetooth. My webradio project uses your audio lib and I replaced the PCM5102a with a TSA5001 module to transmit the playback to my BT speakers.
When I connect to German public radio stations (WDR, NDR, Radio Bremen) the played sound is perfect. But every private radio station stream playback I'm testing is interrupted approx. every 4 seconds for half a second. Then it continues perfectly for the next 4 secs. There are some stations that behave in another way: They are played too fast - it sounds like Mikey Mouse :-) And they are interrupted every 0,75secs.
My analysis shows that these problems could be related to different bit or/and sampling rates. Here are some examples
Properties of public radio stations streams that are playing perfectly:
[716382][I][main.cpp:664] audio_info(): info Connect to new host: "http://wdr-wdr5-live.icecastssl.wdr.de/wdr/wdr5/live/mp3/128/stream.mp3"
[716388][V][ssl_client.cpp:321] stop_ssl_socket(): Cleaning SSL connection.
[716393][I][main.cpp:664] audio_info(): info buffers freed, free Heap: 127560 bytes
[716459][I][main.cpp:664] audio_info(): info Connection has been established in 57 ms, free Heap: 126852 bytes
[716546][I][main.cpp:664] audio_info(): info redirect to new host "http://f121.rndfnk.com/ard/wdr/wdr5/live/mp3/128/stream.mp3?cid=01FBS0E239W9R7GR1S5Q7RTQRC&sid=2dRoZsiHLqv60IFig0iU1iTdAf1&token=QCY8z_hu46cD23uVJtLW8rexUjqF6Fleqipbp5H56VY&tvf=iJ2SbK0luxdmMTIxLnJuZGZuay5jb20"
[716561][I][main.cpp:664] audio_info(): info Connect to new host: "http://f121.rndfnk.com/ard/wdr/wdr5/live/mp3/128/stream.mp3?cid=01FBS0E239W9R7GR1S5Q7RTQRC&sid=2dRoZsiHLqv60IFig0iU1iTdAf1&token=QCY8z_hu46cD23uVJtLW8rexUjqF6Fleqipbp5H56VY&tvf=iJ2SbK0luxdmMTIxLnJuZGZuay5jb20"
[716589][V][ssl_client.cpp:321] stop_ssl_socket(): Cleaning SSL connection.
[716594][I][main.cpp:664] audio_info(): info buffers freed, free Heap: 126752 bytes
[716655][I][main.cpp:664] audio_info(): info Connection has been established in 52 ms, free Heap: 126208 bytes
[716694][I][main.cpp:689] audio_bitrate(): bitrate 128000
[716698][I][main.cpp:673] audio_showstation(): station WDR 5, Westdeutscher Rundfunk Koeln
[716700][I][main.cpp:695] audio_icyurl(): icyurl https://www1.wdr.de/radio/wdr5/index.html
[716716][I][main.cpp:664] audio_info(): info MP3Decoder has been initialized, free Heap: 82784 bytes , free stack 5520 DWORDs
[716720][I][main.cpp:698] audio_lasthost(): lasthost http://f121.rndfnk.com/ard/wdr/wdr5/live/mp3/128/stream.mp3?cid=01FBS0E239W9R7GR1S5Q7RTQRC&sid=2dRoZsiHLqv60IFig0iU1iTdAf1&token=QCY8z_hu46cD23uVJtLW8rexUjqF6Fleqipbp5H56VY&tvf=iJ2SbK0luxdmMTIxLnJuZGZuay5jb20
[716747][I][main.cpp:664] audio_info(): info stream ready
[716847][I][main.cpp:664] audio_info(): info Channels: 2
[716847][I][main.cpp:664] audio_info(): info SampleRate: 48000
[716854][I][main.cpp:664] audio_info(): info BitsPerSample: 16
[716861][I][main.cpp:664] audio_info(): info BitRate: 128000
==============
[3216518][I][main.cpp:664] audio_info(): info Channels: 1
[3216521][I][main.cpp:664] audio_info(): info SampleRate: 48000
[3216528][I][main.cpp:664] audio_info(): info BitsPerSample: 16
[3216536][I][main.cpp:664] audio_info(): info BitRate: 64000
[3216739][I][main.cpp:664] audio_info(): info StreamTitle='Bremen Zwei'
[3216740][I][main.cpp:677] audio_showstreamtitle(): currentStreamTitle 'Bremen Zwei' 11
Properties of streams that are continuously interrupted:
[1498274][I][main.cpp:664] audio_info(): info Channels: 2
[1498274][I][main.cpp:664] audio_info(): info SampleRate: 44100
[1498281][I][main.cpp:664] audio_info(): info BitsPerSample: 16
[1498288][I][main.cpp:664] audio_info(): info BitRate: 192000
===============================
[1618710][I][main.cpp:664] audio_info(): info Channels: 2
[1618710][I][main.cpp:664] audio_info(): info SampleRate: 44100
[1618717][I][main.cpp:664] audio_info(): info BitsPerSample: 16
[1618725][I][main.cpp:664] audio_info(): info BitRate: 320000
Properties of stream that are playing with Mickey Mouse voice (pitch is to high)
[3017508][I][main.cpp:664] audio_info(): info Connect to new host: "http://rnrw.cast.addradio.de/rnrw-0182/deinrock/low/stream.mp3"
[3017513][V][ssl_client.cpp:321] stop_ssl_socket(): Cleaning SSL connection.
[3017518][I][main.cpp:664] audio_info(): info buffers freed, free Heap: 127616 bytes
[3017589][I][main.cpp:664] audio_info(): info Connection has been established in 62 ms, free Heap: 126912 bytes
[3018094][I][main.cpp:664] audio_info(): info redirect to new host "http://rnrw--di--rnrw-ais-01--04--cdn.cast.addradio.de/rnrw/deinrock/low/stream.mp3?_art=dj0yJmlwPTc3LjIyLjEzOS4yMTAmaWQ9aWNzY3hsLW1qaHNrZnhrYiZ0PTE3MTAwNjkwMTEmcz03ODY2ZjI5YyM3ZTcwMjQzZDBlNTQ5YjkxZTVhNmUxMWVjN2Y2YzQxMg"
[3018110][I][main.cpp:664] audio_info(): info Connect to new host: "http://rnrw--di--rnrw-ais-01--04--cdn.cast.addradio.de/rnrw/deinrock/low/stream.mp3?_art=dj0yJmlwPTc3LjIyLjEzOS4yMTAmaWQ9aWNzY3hsLW1qaHNrZnhrYiZ0PTE3MTAwNjkwMTEmcz03ODY2ZjI5YyM3ZTcwMjQzZDBlNTQ5YjkxZTVhNmUxMWVjN2Y2YzQxMg"
[3018138][V][ssl_client.cpp:321] stop_ssl_socket(): Cleaning SSL connection.
[3018144][I][main.cpp:664] audio_info(): info buffers freed, free Heap: 126972 bytes
[3018214][I][main.cpp:664] audio_info(): info Connection has been established in 61 ms, free Heap: 126232 bytes
[3018798][I][main.cpp:689] audio_bitrate(): bitrate 64000
[3018803][I][main.cpp:695] audio_icyurl(): icyurl
[3018812][I][main.cpp:664] audio_info(): info MP3Decoder has been initialized, free Heap: 102392 bytes , free stack 5296 DWORDs
[3018814][I][main.cpp:698] audio_lasthost(): lasthost http://rnrw--di--rnrw-ais-01--04--cdn.cast.addradio.de/rnrw/deinrock/low/stream.mp3?_art=dj0yJmlwPTc3LjIyLjEzOS4yMTAmaWQ9aWNzY3hsLW1qaHNrZnhrYiZ0PTE3MTAwNjkwMTEmcz03ODY2ZjI5YyM3ZTcwMjQzZDBlNTQ5YjkxZTVhNmUxMWVjN2Y2YzQxMg
[3019206][I][main.cpp:664] audio_info(): info stream ready
[3019206][I][main.cpp:664] audio_info(): info syncword found at pos 0
[3019213][I][main.cpp:664] audio_info(): info Channels: 2
[3019216][I][main.cpp:664] audio_info(): info SampleRate: 24000
[3019223][I][main.cpp:664] audio_info(): info BitsPerSample: 16
[3019231][I][main.cpp:664] audio_info(): info BitRate: 64000
[3019475][I][main.cpp:664] audio_info(): info StreamTitle=''
[3019476][I][main.cpp:677] audio_showstreamtitle(): currentStreamTitle '' 0
[3019551][I][main.cpp:664] audio_info(): info durationMilliseconds='30168'
[3019551][I][main.cpp:692] audio_commercial(): commercial 30168
[3025050][V][main.cpp:365] savePreferencesCB(): Saved preferences
[3049470][I][main.cpp:664] audio_info(): info StreamTitle='ASIA - HEAT OF THE MOMENT'
[3049470][I][main.cpp:677] audio_showstreamtitle(): currentStreamTitle 'ASIA - HEAT OF THE MOMENT' 25
Am I missing some configuration options? Do you have any ideas?
You can find audio-setup in my main class..
Okay. RTFM. The specs of the TSA5102:
Bluetooth v5.3 specification support
I2S digital input
Sampling Rate: 48KHz
Bit per Sample: 16 bit, 24bit, 32bit.
aptX, aptX Low Latency, aptX HD, SBC and AAC
Bluetooth protocol: A2DP
The fixed Sampling Rate of 48KHz explains the issues with streams using other sample rates e.g. 44100 or 24000Hz.
@schreibfaul1 : Is there a way to resample the stream with 48KHz on the fly to match the TSA5001 specs?
This issue is stale because it has been open for 30 days with no activity.
This issue was closed because it has been inactive for 14 days since being marked as stale.