Конвертирайте аудио файл в морзова азбука. Програма за генериране на морзов звуков код

10.01.2022

Предлагаме на вашето внимание онлайн преводач на морзова азбука.

Какво означава? Да приемем, че трябва да преведете или да чуете как ще звучи вашият текст, когато бъде преведен на морзова азбука. Въведете текста си в левия прозорец, посочете езика на текста по-долу и щракнете върху стрелката надясно. В десния прозорец ще получите морзовата азбука на вашия текст. Като щракнете върху бутона "пусни" по-долу, можете да слушате текста си на морзова азбука. По този начин ще използвате нашия онлайн преводач на морзов код.

Онлайн текстов преводач
до Морзов код и обратно

В текстовата интерпретация на кода се използва „знак за раздел“ (-···-) за обозначаване на интервал. Това се прави единствено за по-лесно копиране.

внимание!Вграденият плейър работи добре в Chrome, нормално в Opera (ако се заби, можете да прекодирате текста в морзова азбука, помага), много посредствен в Safari. В Firefox и Internet Explorerизобщо не работи .

В звуковата версия на съобщението се спазват всички правила: продължителността на една точка се приема за единица време; продължителността на тире е равна на три точки; паузата между елементи от един и същи знак е една точка, между знаците в една дума е 3 точки, между думите е 7 точки.

Звуковият файл за изтегляне е представен във форматWAV (трябва да го изтеглите, а не да го отваряте в браузъра). Голям е: например морзова азбука за изпращане„Гъркът е карал през реката. вижда грък, рак в реката. пусна ръката на гърка в реката и ракът грабна ръката на гърка.тежи в него 209 KB(въпреки че съдържа само835 битаинформация).

Искате ли да тествате силата си? Нищо не може да бъде по-просто.

Мелодии с морзова азбука:

кирилица
латински
Морзов код
Пеене
А
А
. —
о да
б
IN
— . . .
ба-ки-те-кут
IN
У
. — —
ви-да-ла
Ж
Ж
— — .
га-ра-жи
г
г
— . .
до-ми-ки
д
д
.
Има
И
V
. . . —
же-ле-зи-сто
З
З
— — . .
за-ка-ти-ки
И
аз
. .
и-ди
Y
Дж
. — — —
и-късо-към-е
ДО
ДО
— . —
как си
Л
Л
. — . .
лу-на-ти-ки
М
М
— —
Майка
Н
Н
— .
номер
ЗА
ЗА
— — —
близо
П
П
. — — .
пи-ла-по-йот
Р
Р
. — .
ре-ша-ет
СЪС
С
. . .
си-не-е
Т
Т

И така
U
U
. . —
u-носи
Е
Е
. . — .
фи-ли-мон-чик
X
Н
. . . .
хи-ми-чи-те
В
СЪС
— . — .
цап-ли-на-ши
з
не
— — — .
ча-ша-до-не
Ш
не
— — — —
ша-ро-ва-ра
SCH
Q
— — . —
ша-ти-не-ша
б, б
X
— . . —
този мек знак
Y
Y
— . — —
не-да-правя
д
не
. . — . .
е-ле-рон-чи-ки
Ю
не
. . — —
Джулиана
аз
не
. — . —
Аз съм малък, аз съм малък

А ето и мелодиите на числата и най-често срещаните знаци. Отбелязвам, че в чисто дигиталните текстове нулата често се предава с едно тире, като буквата Т - това приятно разнообразява предаването и премахва необходимостта да слушате пет тирета подред;)
Знак
Морзов код
Пеене
0
— — — — —
нула-до-о-ко-ло
1
. — — — —
и-само-един
2
. . — — —
Отидох-на-планината
3
. . . — —
three-you-be-ma-lo, или I-ku-ka-ra-cha
4
. . . . —
че-ве-ри-те-ка
5
. . . . .
пет-ле-ти-е
6
— . . . .
по-шест-ти-бе-ри
7
— — . . .
да-да-се-ме-рик
8
— — — . .
осем-мо-го-и-ди
9
— — — — .
но-на-не-на-ми
?
. . — — . .
къде да питам
!
— — . . — —
по-ка-но-при-ка-за
,
. — . — . —
и така и така и така
\ (разделител)
— . . . —
веднъж-де-ли-те-ка

Но той е предназначен да изучава кодовете на кирилицата, което е без значение в съвременните радиокомуникации (всички използват латиница, с изключение на нашата доблестна армия).

C++ във връзка с Qt беше избран като инструмент за реализиране на идеята.

Основната идея на програмата

Атомът (единица за време) на морзовата азбука е точка; продължителността на всички останали елементи се формира спрямо нея:
  1. Тире се равнява на три звучащи точки;
  2. Паузата между елементите на един символ (знак) е една тиха точка;
  3. Между знаците има три точки;
  4. Между думите има седем точки.
Както можете да видите, всеки код, базиран на морзов код, може да бъде представен като набор от звучащи и тихи точки: започнах от тази идея и това решение ми се стори доста оригинално.

Първоначално изпълнение

В първата версия на програмата комбинацията от звучащи и тихи точки се съхраняваше като вектор с булеви елементи, където вярносъответстваше на включване на звука и невярно- изключване.

Както вече разбрахте, за да получа крайния сигнал, просто „издърпах“ звука с известно закъснение (с помощта на таймер, равен на продължителността на точката в милисекунди) с безкрайно възпроизвеждан .wav файл със синусоидален запис. Но този подходимаше значителен недостатък и той се състоеше във факта, че всяка точка трябваше да се зарежда отделно с помощта на претоварен оператор или специален метод. Поради този подход трябваше да напиша отделен макрос за всяка буква (като това - #define I DOT<< false << DOT) и создать огромный жуткий превключвателза да изсвири предадения низ. Беше ужасно, но ако сте любопитни, можете да го проверите.
с първата версия на програмата (не можах да кача напълно локалното хранилище в GitHub - само най-новата версия).

Част от страховит превключвател:

bool Morse::StringToMorse (QString &line) ( line += "\0"; for (int i = 0; i< line.size () - 1; ++i) { switch (line.at(i).unicode ()) { case "A": *this << A; if (line.at (i + 1) == " ") continue; else *this << MINI_SPACE; break; case "B": *this << B; if (line.at (i + 1) == " ") continue; else *this << MINI_SPACE; break; // И так далее


Ето как звукът се включваше и изключваше (всъщност беше генериран звуковият код):

void Morse::PlayLinePoints () ( QTimer::singleShot (duration_point_, this, SLOT (Mute ())); sound_.play (); ) void Morse::Mute () ( if (line_points_.empty ()) ( / /Спиране на възпроизвеждане sound_.stop (); return;) if (line_points_.at (0)) ( //Включване на звука sound_.setMuted (false); line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); return;) else ( sound_.setMuted (true); //Изключване на звука line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); връщане;))

Окончателна версия

Тези макроси се оказаха много тромави и моят перфекционизъм вече не можеше да гледа тези чудовищни ​​дизайни. След като помислих малко, стигнах до извода, че идеята ми е добра, но съхраняването на кодове под формата на макроси е много неудобно и ако решите този проблем, тогава всичко ще бъде наред. В резултат QMap беше използван за съхраняване на кодове:

//Съхранява съответните комбинации от точки и тирета на QMap символи кодове_;
Този подход се оказа много удобен. Сега просто използвах текущия герой, който се играе като ключ, и получих завършеното
За да се възпроизведе кодът (набор от булеви стойности), обаче, алгоритъмът за възпроизвеждане беше малко по-сложен: беше необходимо да се въведе броячът на текущия елемент на символа и броячът на знаците в реда:

Ново изпълнение на възпроизвеждане:

void Morse::MiniSpace () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true); ++id_element_; // Преминете към друг кодов елемент if (id_element_ == codes_.value ( string_to_play_.at (id_char_).size ()) ( ++id_char_; id_element_ = 0; QTimer::singleShot (duration_dot_ * 3, this, SLOT (Mute())); //Пауза между връщане на символи; ) QTimer: : singleShot (duration_dot_, this, SLOT (Mute())); //Pause between symbol elements ) void Morse::Space () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true) ; //Паузата продължава 7 точки //Но тъй като след символа има пауза от три точки, трябва да се настрои допълнителна пауза с дължина 4 точки QTimer::singleShot (duration_dot_ * 4, this, SLOT (Mute()) ); void Morse::Mute () ( if (stop_) ( this->Stop (); return; ) if (id_char_ == string_to_play_.size ()) ( // Редът е приключил this->Stop (); return; ) if (string_to_play_.at (id_char_) == " ") ( Space(); ++id_char_; //Отидете до друг кодов елемент return; ) if (codes_.find (string_to_play_.at (id_char_)) == codes_.end ( )) ( qDebug()<< string_to_play_.at (id_char_) << ": No code!"; sound_.stop (); return; } sound_.setMuted (false); //Включаем звук if (codes_.value (string_to_play_.at (id_char_)).at (id_element_)) { QTimer::singleShot (duration_dot_, this, SLOT (MiniSpace())); //Воспроизводим точку } else { QTimer::singleShot (duration_dot_ * 3, this, SLOT (MiniSpace())); //Воспроизводим тире } } bool Morse::Play () { if (!stop_) return false; if (string_to_play_ == "") return false; stop_ = false; id_char_ = 0; id_element_ = 0; sound_.setMuted (true); //Выключаем звук sound_.play (); Mute (); } void Morse::Stop () { if (stop_) return; sound_.stop (); id_char_ = 0; id_element_ = 0; stop_ = true; }


Флаг стоп_беше въведен за предотвратяване на неправилна работа на програмата (две последователни извиквания на Play() и други лоши неща).
Не виждам причина да включвам останалата част от изходния код и заглавните файлове в тялото на статията, тъй като всичко там е съвсем очевидно и прозрачно.

Можете да изтеглите пълния набор от източници за най-новата версия от GitHub. Писането на GUI е тривиална задача, но все пак, ако бъде създаден GUI, тогава ще добавя връзката. Ако имате въпроси или коментари, пишете в коментарите - определено ще отговоря.

Безплатна услуга за превод на руски и латински текст в морзова азбука и обратно. Ако скриптът не работи, опитайте да активирате поддръжката на Javascript във вашия браузър.

Символите в таблицата са активни. Когато щракнете с левия бутон върху символ или морзова азбука, те ще бъдат добавени към прозореца за въвеждане.


руски
символ
латински
символ
Код
Морз
АА
бб
INУ −−
ЖЖ−−
гг
Е и Йод
ИV
ЗЗ−−
Иаз
YДж −−−
ДОК− −
ЛЛ
ММ−−
НН
ЗАО−−−
ПП −−
РР
СЪСС
ТТ
UU
ЕЕ
Xз
ВВ− −
зÖ −−−
ШCH−−−−
SCHQ−− −
КомерсантÑ −− −−
YY− −−
bX− −
дÉ
ЮÜ −−
азÄ − −
руски
символ
латински
символ
Код
Морз
1 −−−−
2 −−−
3 −−
4
5
6
7 −−
8 −−−
9 −−−−
0 −−−−−
.
, . − − −
! , −− −−
! − − −−
? −−
" −−−−
" − −
; − − −
: −−−
- − −
+ − −
= − −
_ (долна черта) −− −
/ − −
(− −−
(или)) − −− −
&
$ − −
@ −− −
ГрешкаГрешка
Край на връзкатаКрай на контакта − −

P.S. Трябва да се отбележи, че въпреки че руският морзов код частично съвпада с латинския, все още има някои разлики (сравних го на руските и английските страници на Wikipedia - можете също да видите кодови таблици там). Например:

  • символът "точка" в руската версия: · · · · · · , и на латиница: · – · – · –
  • запетая на руски: · − · − · − , и на латински: – – · · – –
  • удивителен знак на руски: − − · · − − , и на латински: – · – · – –
  • отварящата скоба на латиница: – · – – ·, и затварящата скоба – · – – · –, а на руски и двете скоби са еднакви: – · – – · –
  • някои символи като & + _ $ са само в латинската версия

Следователно, в случай на спорни въпроси, например преобразуване на кода − − · · − − във удивителен знак (в руската версия) или в запетая (в латинската версия), предпочитание се дава на руската версия, тъй като тъй като четете това съобщение на руски, се предполага, че руската версия е по-важна за вас.

В същото време, тъй като на руски няма такъв необходим знак като + (и за някои хора $ : може да е по-необходим), тогава добавих този знак и към руското кодиране. Ако тази опция не ви устройва, ако имате минимални познания по Javascript и HTML, винаги можете да коригирате този скрипт, за да отговаря на вашите нужди.

Между другото, това е първото ми творение на езика Javascript и вероятно има много недостатъци в него. Не съдете строго :).

P.S. Разрешено е свободното копиране и цитиране на тази статия, при условие че е посочена отворена активна връзка към източника и е запазено авторството на Руслан Тертишни.

P.P.S. Ако искате да научите морзовата азбука по интересен начин, ние ви предлагаме една игра "Морзова магия 2", създаден от Руслан Богданов.

    Има много опции за дешифриране на сигнала за бедствие SOS - „Спасете нашите души“, „Спасете нашия кораб“, „Плувайте или потънете“, „Спрете други сигнали“, „Спасете от смъртта“. Но всички те са просто мнемоника, измислена за по-добро запаметяване, докато когато този сигнал е приет като стандартен сигнал на Международната радиотелеграфна конференция през 1906 г., в съкращението не е вложено никакво значение. Дори самите букви SOS могат да бъдат приписани много условно на последователността на морзовия код (. . . . - - - . . .), тъй като в нея няма междубуквени интервали. И възприеха тази комбинация от точки и тирета, защото се оказа по-удобна от другите за разпознаване и подчертаване в общия поток от сигнали поради достатъчната си дължина и симетрия.

    Самюъл Морз е бил художник до 34-годишна възраст и не се е интересувал от технологии. През 1825 г. пратеник му доставя писмо от баща му, в което се казва, че жена му умира. Морс веднага напуска Вашингтон и отива в Ню Хейвън, където живее семейството му, но до пристигането му съпругата му вече е погребана. Този инцидент принуди Морз да се откаже от рисуването и да се задълбочи в изучаването на начини за бързо доставяне на съобщения на дълги разстояния, което доведе до разработването на морзовата азбука и електрическия телеграф през 1838 г.

    Морзовата азбука в познатата й форма не е изобретена от Морз, а от немския инженер Герке. Оригиналната морзова азбука беше тромава, въпреки че се използваше в някои американски железопътни линии до 60-те години на миналия век.

    На 6 февруари 1900 г. радиостанция, разположена във финландския град Котка, предава безжична телеграма до ледоразбивача Ермак със заповед да спаси 50 рибари на счупен леден блок. Това беше първият радиосигнал за бедствие в историята, излъчен в морето. Спасителната операция е приключила успешно.

    Съвременните подводници са оборудвани с по-ефективни средства за комуникация с „наземния свят“. Комуникацията се осъществява на свръхдълги вълни, които са в състояние да проникнат в океански дълбочини до 300 метра. Това е много скъпа „мобилна комуникация“, която изисква поддръжката на мощни наземни антенни полета, които консумират мощност до 30 MW, и комуникационни самолети, които постоянно патрулират в небето.

    SOS сигналът се предава на честота 600 метра само в случай на спешност, когато екипажът на кораба и пътниците са в реална опасност за живота си. В случай на нарушение на това правило, могат да бъдат наложени санкции на отговорните за неоправдана паника. Или морален, което не е празна фраза в морските среди. Или материални - когато притеклите се на помощ кораби понасят значителни материални загуби. Има обаче изключение от това неизменно правило. В някои случаи капитанът на кораб може да предава информация на „звукова честота“ в продължение на три фиксирани „минути мълчание“ за появата на сериозна заплаха за корабите в региона. Това може да са съобщения за неизправни фарове, вулканична дейност, пиратска дейност, потънали кораби...

    За да се ускорят радиокомуникациите, съкращенията, трибуквените "Q-кодове" и множество жаргонни изрази бяха въведени в широка употреба. Когато Q кодът се предава под формата на въпрос или твърдение, значението му се променя. При гласовата комуникация сигналът SOS не се използва; като сигнал за бедствие. Забранява се подаването на SOS сигнал, освен ако няма реална заплаха за живота на хора или плавателен съд в морето.

Морзовата азбука е метод за кодиране на знаци, който позволява на операторите да изпращат съобщения, използвайки поредица от дълги и къси електрически сигнали, или с други думи, използвайки точки и тирета.

Кой е изобретил морзовата азбука?

Самюел Ф. Б. Морз и неговият асистент Алфред Вейл се считат за изобретатели на морзовата азбука.

Кога е изобретен морзовият код?

Морзовата азбука е разработена през 1830-те и подобрена през 1840-те.

Кое беше първото съобщение, изпратено с морзовата азбука?

Първото официално послание беше: „Какво сотвори Бог“ (на руски: Чудни дела Твои, Господи!). Изпратено е от Самюъл Ф. Б. Морз на 24 май 1844 г. при откриването на телеграфната линия Балтимор-Вашингтон.

За какво се използва морзовата азбука?

В миналото морзовата азбука се използваше много широко, особено в армията. Днес морзовата азбука има ограничени приложения, но все още се използва в авиацията, радиолюбителите и като помощна технология за хора с увреждания.

Как да използвам Морзов код?

Морзовата азбука може да се използва по различни начини, като например с писалка и хартия, със светлина и звук или дори с очи или пръсти.

Как да научите морзовата азбука?

Можете да научите морзовата азбука, като слушате аудиозаписи на кода, както и като използвате техники за запаметяване на думи, които можете да намерите на различни уебсайтове. Един от най-добрите методи за изучаване на морзов код през 2019 г. беше клавиатурата Gboard от Google. Можете да практикувате онлайн безплатно с упражнения с морзов код, предоставени от Google Creative Lab.

Как да четем морзов код?

Ако нямате достатъчно опит в четенето на морзов код, можете да потърсите съответните знаци в таблица с морзов код или просто да използвате преводач на морзов код.

Как се превежда морзовата азбука?

Ако искате да преведете или дешифрирате морзов код и не знаете как да го четете, можете просто да използвате онлайн преводач на морзов код. С помощта на преводач на морзова азбука можете лесно да дешифрирате кода и да прочетете текста на руски.

Какво е преводач на морзова азбука?

Преводачът на морзова азбука позволява на всеки да преведе морзовата азбука в текст и лесно да декодира съобщението, написано в кода. С помощта на онлайн преводач на морзова азбука всеки може да преведе прост текст на руски или друг език на морзова азбука и обратно. Помните ли SMS мелодията на Nokia? Ако искате да изпитате носталгия, опитайте да дешифрирате кода "... -- ..." и след това пуснете звука. Какво ще стане, ако трябва да дешифрирате тайно съобщение с морзова азбука или да попаднете на великденско яйце с код в играта? Преводач на морзова азбука е на ваше разположение 7/24, ако имате интернет връзка и желание да научите морзовата азбука.