Progress
Voice codec
☑ 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 streaming
☑ Audio playback : Sine output by I²S on ESP32's internal DAC : esp32-dds (direct digital synthesis)
☑ Decoded Codec2 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 and output them on SGTL5000 headphone and line out.
☑ Audio feed-through using SGTL5000 : it works but it's noisy, probably due to the breadboarding setup, including the ground loops.
☐ Audio feed-through : not possible without external I2S peripherals (?: TBD). Internal DAC and ADC only work on I2S0. I2S0 can be set as output or input, not both at the same time (?: TBD).
Issues skipped
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.
It's coming along well - good work!