☑ Selection of voice codec : Codec2
☑ Implementing voice codec on embedded platform : esp32-codec2
☐ Making unit test for voice codec
☐ Turning Codec2 into a standalone Arduino library, which will allow for easier integration by third parties.
☑ Audio playback : Sine output by I²S on ESP32's internal DAC : esp32-dds (direct digital synthesis)
☑ Real time Codec2 decoding and audio output on ESP32's internal DAC : esp32-codec2-DAC
☑ Audio capture (through I²S)
☑ Output sine wave to external I2S Audio codec (i.e. SGTL5000)
☑ Decode Codec2 packets in real time and output them on SGTL5000 headphone and line out. The Codec2 decoding and audio streaming is all done in tasks. The 'loop'-function has nothing to do.
☑ Audio feed-through using SGTL5000 : it took some tweaking to adjust the input audio level to line-in levels of the SGTL5000 and headphone output volume settings. I2S-peripheral works full duplex here, while ESP32 documentation only mentions half-duplex operation.
☑ Real time codec2 encoding analog audio from SGTL5000's line input. Codec packets are printed real time in base64 format to serial port
☐ Audio filtering in SGTL5000, which codec2 should benefit from.
☑ Half-duplex operation : every few seconds the codec switches between encoding and decoding. It decodes packets stored in flash. It encodes audio from the SGTL5000 codec.
☑ Generating some RTTTL music and transmitting it with the SX1278 FSK-modem on 434MHz. The RSP1A decodes it fine using CubicSDR. It's not very useful, but it's fun. Using PDM, we might even be able to play rudimentary audio.
☑ SX1278 modules using RadioLib : LoRa, FSK and OOK.
☑ SI4463 module using RadioHead : 2GFSK
☑ SI4463 module using Zak Kemble's SI4463 library : 4GFSK in 6.25kHz channel spacing
☐ Adding SI4463 to RadioLib library (reading chip ID already works)
Issues listed here are of minor priority. They are not blocking further development of the project. A working prototype is considered more important. If we would spend too much time on the issues listed here, we could get bogged down into trouble, potentially leading to never building something that works.
- Find out why codec2 on the ESP32 doesn't yield the same codec2 packets as the codec2 on the PC, although they're based on the same code base. ESP32-codec2 packets can successfully be decoded by c2dec on the PC, so the two implementations are still compatible.