Описание 📝
Этот инструмент позволяет преобразовать текст в аудио азбуки Морзе, воспроизвести его, скачать как аудиофайл и даже декодировать загруженный аудиофайл с Морзе обратно в текст. Всё работает локально в вашем браузере без сервера! 🌐 Используйте эмодзи для веселья: 🚀
Техническое Описание 🛠️
Этот микросервис реализован полностью на клиентской стороне с использованием HTML, CSS и JavaScript, без бэкенда. Он использует Web Audio API для генерации и анализа аудио, а также File API для работы с загруженными файлами. Вот детальное описание работы:
- Словарь Морзе: Определён объект
morseCodeс сопоставлением символов (A-Z, 0-9, пробел и знаки препинания) к кодам Морзе (точки и тире). Обратный словарьreverseMorseсоздан для декодирования. - Преобразование текста в Морзе: Функция
textToMorseпреобразует текст в верхний регистр, разбивает на символы и заменяет на коды Морзе, разделяя буквы пробелами и слова слешем '/'. - Генерация аудио: Используется
AudioContextдля создания буфера аудио. Параметры: частота 600 Гц, длительность точки 0.1с, тире 0.3с, паузы внутри буквы 0.1с, между буквами 0.3с, между словами 0.7с. ФункцияgenerateMorseAudioрассчитывает общую длительность, создаёт буфер и заполняет его синусоидой для сигналов (точек/тире), с точными паузами. Сэмплы рассчитываются сMath.roundдля целочисленности. - Воспроизведение: Функция
playMorseгенерирует буфер и используетBufferSourceдля проигрывания. - Скачивание: Функция
downloadMorseгенерирует буфер, преобразует в WAV с помощьюaudioBufferToWav(записывая заголовки RIFF/WAVE/FMT/data и 16-битные сэмплы), создаёт Blob и скачивает через ссылку. - Декодирование аудио: Функция
decodeMorseFuncчитает файл как ArrayBuffer, декодирует в AudioBuffer. Вычисляет огибающую (сглаженное среднее абсолютных значений с окном 100 сэмплов) для стабильного детектирования сигналов. Затем использует конечный автомат (state machine) для подсчёта длительностей сигналов и пауз. Оценивает единицу времени (unit) по минимальной длительности сигнала (точка). Устанавливает пороги: для символов (dot < 2*unit, dash >=), для пауз (intra < 2*unit, inter >=2*unit <5*unit, word >=5*unit). Собирает коды Морзе, декодирует в текст, заменяя '/' на пробелы. - Отладка: Добавлен блок
debugOutputдля вывода длительностей, оценок и кодов для диагностики проблем. - Адаптивность: CSS с media queries для мобильных, всё responsive. Нет зависимости от сервера, работает оффлайн после загрузки.
- Ограничения: Декодирование работает лучше с чистыми аудио, сгенерированными здесь (то же частота, тайминги). Для внешних аудио может потребоваться совпадение параметров; шум или разная скорость могут привести к ошибкам. Нет поддержки FFT для частотного анализа, только амплитудный.
Текст в Азбуку Морзе 🎧
Аудио Морзе в Текст 📄
FAQ ❓
- Что такое азбука Морзе?
- Азбука Морзе — это система кодирования букв и цифр с помощью точек и тире. 📡
- Как работает воспроизведение?
- Введите текст, нажмите "Воспроизвести", и браузер сгенерирует звуки Морзе. 🎵
- Можно ли скачать аудио?
- Да, нажмите "Скачать Аудио" для получения WAV-файла. 💿
- Как декодировать аудио?
- Загрузите аудиофайл с Морзе (сгенерированный здесь или подобный), нажмите "Декодировать", и получите текст. Убедитесь, что аудио чистое, без шума, с частотой около 600Hz. 🔄
- Поддержка мобильных?
- Да, дизайн адаптивный для мобильных устройств. 📱
- Почему декодирование показывает вопросики?
- Возможно, шум в аудио, несоответствие таймингов или частоты. Попробуйте с аудио, сгенерированным здесь. Для лучшей точности используйте чистый тон 600Hz. Если не работает, проверьте консоль браузера на ошибки или debug вывод ниже.