Если я вас правильно понимаю, у вас есть две потребности:
- Модулировать сигнал в звук, а затем демодулировать его.
- Применить исправление ошибок, поскольку канал ненадежен.
Модуляция и демодуляция - хорошо известное приложение, с несколькими способами для модуляции информации.
Номер два, исправление ошибок также хорошо известно и имеет несколько возможностей.Какой из них применим, зависит от частоты ошибок и от того, есть ли у вас дуплексная операция, чтобы вы могли запросить повторную отправку.Если у вас приличное качество и вы можете запросить повторную отправку, подход, подобный тому, который использует TCP, заслуживает изучения.
В противном случае вам придется перейти к алгоритмам обнаружения ошибок и их исправления, таким как тот, который используется на CDROM.
Редактировать после комментария
Выполнение модуляции / демодуляции и отсутствие возможности повторной отправки сужает проблему.Если у вас возникли проблемы с синхронизацией, я все равно рекомендовал бы ознакомиться с существующими (де) методами модуляции, поскольку существуют способы автоматической ресинхронизации с отправителем и увеличения отношения сигнал / шум.
Доосновная проблема;Для исправления ошибок вам нужно будет добавить биты четности в ваш выходной поток, чтобы можно было обнаружить ошибки.Начиная с статьи о прямом исправлении ошибок, которую предлагает @Justin, схема, которая выглядит довольно простой, но все же мощной, - это схема Хэмминга (7,4) .