Converteer audiobestand naar morsecode. Programma voor het genereren van Morse-geluidscode

In dit materiaal zal ik u vertellen over de beste online morsecodevertalers op internet, en hoe u ermee kunt werken. Ondanks het feit dat morsecode al niet meer massaal wordt gebruikt, wordt het nog steeds gebruikt bij de marine, bij het werk van het Ministerie van Noodsituaties en ook als communicatiemiddel tussen veel radioamateurs. Het proces van letter-voor-letter conversie van woorden (zinnen) naar morsecode kan lang duren, dus om dit proces te versnellen is het de moeite waard om speciale online netwerkdiensten te gebruiken waarmee we een vertaling kunnen krijgen van de woorden die we nodig hebben in Morsecode in een fractie van een seconde.

Wat moet u weten over de werking van Morsecode-omzetterdiensten?

Er zijn voldoende diensten op het netwerk waarmee u zowel de onmiddellijke transformatie van de benodigde woorden en zinnen naar morsecode kunt uitvoeren als de vereiste omgekeerde conversie van morsecode naar de tekst die we kennen.

Het werken met deze diensten is vrij eenvoudig: je gaat naar zo'n bron, voegt de tekst (of morsecode) in die nodig is voor transformatie in een speciaal venster, klikt op de vertaalknop en krijgt vrijwel onmiddellijk het gewenste resultaat.

Tegelijkertijd kunt u met sommige diensten niet alleen online vertalingen naar morsecode uitvoeren, maar ook naar de audiovorm van deze code luisteren en deze indien nodig als audiobestand naar uw pc downloaden.

Laten we populaire online morsecodevertalers eens nader bekijken.

Telegraphist.ru – Morsecode-tutorial online

  1. Werken met de site is vrij eenvoudig. U voegt de tekst van het radiogram aan de linkerkant in om het in morsecode om te zetten (of morsecode in het venster aan de rechterkant voor de omgekeerde bewerking).
  2. Selecteer vervolgens de taal (Russisch of Engels) en klik op de overeenkomstige pijlknop om de vertaalprocedure uit te voeren.
  3. De bron nodigt je ook uit om naar het geluid van de bestaande morsecode te luisteren met behulp van de bijbehorende knop voor het afspelen van geluid.

Boyslife.org - een spelvorm voor het aanleren van morsecode

Het populaire internationale entertainmentportaal boyslife.org biedt gebruikers een handig hulpmiddel voor het weergeven van morsecodesymbolen voor letters van het Latijnse alfabet. En ook de mogelijkheid om je kennis van morsecode te testen met behulp van speciale tests.

Wanneer u naar de bron gaat, ziet u een virtueel toetsenbord waarin elke letter (cijfer) op een toets een overeenkomstige morsecode heeft. Om uw kennis van de morsecode te testen, drukt u op de toets "Test 1: Luister en raad" (u wordt gevraagd naar de morsecode te luisteren en vervolgens te raden welk cijfer of welke letter het is), of op "Test 2: Morse de letter". (u moet de vereiste letter of cijfer in morsecode typen).

Bestfree.ru – converteer tekst naar morsecode en omgekeerd

Om een ​​eenvoudige en handige conversie van tekst naar morsecode uit te voeren, moet u de bestfree.ru-service gebruiken. De service heeft een eenvoudige en handige Russisch-talige interface, waarmee u eenvoudig tekst van standaard Cyrillische en Latijnse vormen naar morsecode kunt vertalen en omgekeerd.

  1. Om met services te werken, logt u in op bestfree.ru.
  2. Selecteer de gewenste taal en conversierichting.
  3. Voer de gewenste tekst in het daarvoor bestemde venster in en klik op de knop “Converteren”.

Morsify.net – internationale online morsecodevertaler

De internationale dienst morsify.net is een morsecodevertaler, met een audiocomponent waarmee u het geluid kunt reproduceren van de morsecode die we hebben (of ontvangen als resultaat van de vertaling).

Het werkscherm van de dienst is verdeeld in twee vensters. Aan de linkerkant kunt u de gewenste tekst invoeren in het Cyrillisch of Latijn, en aan de rechterkant wordt automatisch de bijbehorende morsecode weergegeven.

Om Morsecode af te spelen, klikt u bovenaan op de knop ‘Afspelen’ (met een pijl).

4txt.ru – binnenlandse dienst voor het omzetten van tekst in morsecode

En de laatste service waar ik het in dit materiaal over wil hebben is 4txt.ru. De functionaliteit doet denken aan de hierboven beschreven service morsify.net, terwijl de automatische transformatie van tekst naar morsecode hier slechts in één richting werkt: van Cyrillisch (Latijn) naar morsecode.

Anders beschikt de service over klassieke tools voor dit soort services.

Conclusie

Bijna alle online morsecodevertalers die ik hierboven heb genoemd, stellen ons in staat de tekst die we nodig hebben om te zetten in de vorm van morsecode en omgekeerd (met uitzondering van de service 4txt.ru, die eenzijdig werkt). Van alle genoemde diensten zou ik de aandacht van de lezer willen vestigen op de diensten telegraphist.ru en morsify.net. Hiermee kunt u niet alleen de gewenste tekst in morsecode vertalen, maar ook naar het geluid van het resulterende resultaat luisteren, wat handig is bij het trainen van de perceptie van morsecode op het gehoor (luisteren).

Maar het is ontworpen om Cyrillische lettercodes te bestuderen, wat niet relevant is in moderne radiocommunicatie (iedereen gebruikt het Latijnse alfabet, behalve ons dappere leger).

C++ in combinatie met Qt werd gekozen als hulpmiddel voor de implementatie van het idee.

Het hoofdidee van het programma

Het atoom (tijdseenheid) van morsecode is een punt dat alle andere elementen ten opzichte daarvan vormt:
  1. Een streepje is gelijk aan drie klinkende stippen;
  2. Een pauze tussen elementen van één symbool (teken) is één stil punt;
  3. Er staan ​​drie stippen tussen de borden;
  4. Tussen de woorden staan ​​zeven punten.
Zoals je kunt zien, kan elke code die op morsecode is gebaseerd, worden weergegeven als een reeks klinkende en stille punten: ik ging uit van dit idee en deze oplossing leek mij behoorlijk origineel.

Initiële implementatie

In de eerste versie van het programma werd de combinatie van klank- en stille punten opgeslagen als een vector met Booleaanse elementen, waarbij WAAR kwam overeen met het inschakelen van het geluid, en vals- uitschakelen.

Zoals je al begreep, heb ik, om het eindsignaal te verkrijgen, het geluid gewoon met enige vertraging "getrokken" (met behulp van een timer gelijk aan de duur van het punt in milliseconden) met een eindeloos afgespeeld .wav-bestand met een sinusopname. Maar deze aanpak had een aanzienlijk nadeel en bestond erin dat elk punt afzonderlijk moest worden geladen met behulp van een overbelaste operator of een speciale methode. Vanwege deze aanpak moest ik voor elke letter een aparte macro schrijven (zoals deze - #define I DOT<< false << DOT) и создать огромный жуткий schakelaar om de doorgegeven snaar te spelen. Het was verschrikkelijk, maar als je nieuwsgierig bent, kun je het bekijken.
met de eerste versie van het programma (ik kon de lokale repository niet volledig naar GitHub uploaden - alleen de nieuwste versie).

Een stukje griezelige schakelaar:

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; // И так далее


En zo werd het geluid aan- en uitgeschakeld (eigenlijk werd de geluidscode gegenereerd):

void Morse::PlayLinePoints () ( QTimer::singleShot (duration_point_, this, SLOT (Mute ())); sound_.play (); ) void Morse::Mute () ( if (line_points_.empty ()) ( / /Stop het afspelen sound_.stop (); return; ) if (line_points_.at (0)) ( //Zet geluid aan sound_.setMuted (false); line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); return;) else ( sound_.setMuted (true); // Schakel het geluid uit line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); opbrengst; ) )

Uiteindelijke versie

Deze macro's bleken erg omslachtig en mijn perfectionisme kon niet langer naar deze monsterlijke ontwerpen kijken. Na een beetje nadenken kwam ik tot de conclusie dat mijn idee goed was, maar het opslaan van codes in de vorm van macro's is erg lastig en als dit probleem is opgelost, komt alles goed. Als gevolg hiervan werd QMap gebruikt om codes op te slaan:

//Slaat overeenkomstige combinaties van punten en streepjes van QMap-tekens op codes_;
Deze aanpak bleek erg handig. Nu gebruikte ik gewoon het huidige personage dat werd gespeeld als een sleutel en kreeg het klaar
Om de code (een reeks Booleaanse waarden) te reproduceren, werd het reproductie-algoritme echter iets ingewikkelder: het was nodig om de teller van het huidige element van het symbool en de teller van tekens in de regel in te voeren:

Nieuwe afspeelimplementatie:

void Morse::MiniSpace () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true); ++id_element_; //Ga naar een ander code-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())); //Pauze tussen karakters return; ) QTimer: : singleShot (duration_dot_, this, SLOT (Mute())); // Pauze tussen symboolelementen ) void Morse::Space () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true ) ; //De pauze duurt 7 punten //Maar aangezien er na het symbool een pauze van drie punten is, moet een extra pauze worden ingesteld op 4 punten lang QTimer::singleShot (duration_dot_ * 4, this, SLOT (Mute()) ); void Morse::Mute () ( if (stop_) ( this->Stop (); return; ) if (id_char_ == string_to_play_.size ()) ( // De regel is beëindigd this->Stop (); return; ) if (string_to_play_.at (id_char_) == " ") ( Space(); ++id_char_; //Ga naar een ander code-element 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; }


Vlag stop_ werd geïntroduceerd om onjuiste werking van het programma te voorkomen (twee oproepen achter elkaar naar Play() en andere slechte dingen).
Ik zie geen enkele reden om de rest van de broncode en headerbestanden in de hoofdtekst van het artikel op te nemen, aangezien alles daar vrij duidelijk en transparant is.

Je kunt de volledige set bronnen voor de nieuwste versie downloaden op GitHub. Het schrijven van een GUI is een triviale taak, maar toch, als er een GUI wordt gemaakt, zal ik de link toevoegen. Als je vragen of opmerkingen hebt, schrijf dan in de reacties - ik zal zeker antwoorden.

    Er zijn veel opties om het SOS-noodsignaal te ontcijferen: "Red onze zielen", "Red ons schip", "Zwem of zink", "Stop andere signalen", "Red van de dood". Maar het zijn allemaal slechts geheugensteuntjes, uitgevonden om ze beter te kunnen onthouden, terwijl toen dit signaal op de Internationale Radiotelegraafconferentie van 1906 als standaardsignaal werd aangenomen, er geen betekenis aan de afkorting werd gegeven. Zelfs de letters SOS zelf kunnen zeer voorwaardelijk worden toegeschreven aan de morsecodereeks (. . . - - - . . .), omdat er geen interletterintervallen in voorkomen. En ze hebben deze combinatie van punten en streepjes overgenomen omdat deze vanwege de voldoende lengte en symmetrie handiger bleek te zijn dan andere voor het herkennen en benadrukken van de algemene stroom van signalen.

    Samuel Morse was tot zijn 34e kunstenaar en was niet geïnteresseerd in technologie. In 1825 bezorgde een boodschapper hem een ​​brief van zijn vader waarin stond dat zijn vrouw op sterven lag. Morse verliet Washington onmiddellijk en ging naar New Haven, waar zijn familie woonde, maar bij zijn aankomst was zijn vrouw al begraven. Dit incident dwong Morse het schilderen op te geven en zich te verdiepen in de studie van manieren om snel berichten over lange afstanden over te brengen, wat leidde tot de ontwikkeling van de morsecode en de elektrische telegraaf in 1838.

    Morsecode in zijn vertrouwde vorm is niet uitgevonden door Morse, maar door de Duitse ingenieur Gehrke. De oorspronkelijke morsecode was omslachtig, hoewel deze tot ver in de jaren zestig op sommige Amerikaanse spoorwegen werd gebruikt.

    Op 6 februari 1900 zond een radiostation in de Finse stad Kotka een draadloos telegram uit naar de ijsbreker Ermak met het bevel om 50 vissers op een gebroken ijsschots te redden. Dit was het eerste radionoodsignaal in de geschiedenis dat op zee werd uitgezonden. De reddingsoperatie is succesvol afgerond.

    Moderne onderzeeërs zijn uitgerust met efficiëntere communicatiemiddelen met de ‘grondwereld’. De communicatie vindt plaats via ultralange golven, die oceaandieptes tot 300 meter kunnen doordringen. Dit is een zeer dure ‘mobiele communicatie’, die het onderhoud vereist van krachtige antennevelden op de grond die stroom verbruiken tot 30 MW, en van communicatievliegtuigen die voortdurend in de lucht patrouilleren.

    Het SOS-signaal wordt alleen uitgezonden op een frequentie van 600 meter in geval van nood, wanneer de bemanning en passagiers van het schip reëel gevaar voor hun leven lopen. In geval van overtreding van deze regel kunnen sancties worden opgelegd aan degenen die verantwoordelijk zijn voor ongerechtvaardigde paniek. Of moreel, wat geen holle frase is in de maritieme gemeenschap. Of materieel - wanneer de schepen die kwamen helpen aanzienlijke materiële verliezen lijden. Er bestaat echter een uitzondering op deze onveranderlijke regel. De kapitein van het schip kan in sommige gevallen op een ‘sonische frequentie’ gedurende drie vaste ‘minuten stilte’ informatie doorgeven over het ontstaan ​​van een ernstige dreiging voor schepen in de regio. Dit kunnen berichten zijn over defecte vuurtorens, vulkanische activiteit, piratenactiviteit, gezonken schepen...

    Om de radiocommunicatie te versnellen, werden afkortingen, drieletterige "Q-codes" en talrijke slanguitdrukkingen op grote schaal gebruikt. Wanneer de Q-code wordt verzonden in de vorm van een vraag of verklaring, verandert de betekenis ervan. Bij spraakcommunicatie wordt het SOS-signaal niet gebruikt; Mayday wordt gebruikt als noodsignaal. Het is verboden een SOS-signaal te geven, tenzij er sprake is van een reële bedreiging voor het leven van mensen of een schip op zee.

Wij brengen een online morsecodevertaler onder uw aandacht.

Wat betekent het? Laten we aannemen dat u moet vertalen of luisteren hoe uw tekst zal klinken wanneer deze in morsecode wordt vertaald. U typt uw ​​tekst in het linkervenster, geeft hieronder de teksttaal aan en klikt op het pijltje naar rechts. In het rechtervenster ontvangt u de morsecode van uw tekst. Door op de knop "play" hieronder te klikken, kunt u uw tekst in morsecode beluisteren. Op deze manier maakt u gebruik van onze online morsecodevertaler.

Online tekstvertaler
naar Morsecode en terug

Bij de tekstinterpretatie van de code wordt een “sectieteken” (-···-) gebruikt om een ​​spatie aan te duiden. Dit wordt uitsluitend gedaan om het kopiëren te vergemakkelijken.

Aandacht! De ingebouwde speler werkt goed in Chrome, normaal gesproken in Opera (als hij vastloopt, kun je de tekst opnieuw coderen in morsecode, dat helpt), zeer middelmatig in Safari. Werkt helemaal niet in Firefox en Internet Explorer .

In de audioversie van het bericht worden alle regels gevolgd: de duur van één punt wordt als tijdseenheid beschouwd; de duur van een streepje is gelijk aan drie punten; de pauze tussen elementen van hetzelfde teken is één punt, tussen tekens in een woord - 3 punten, tussen woorden - 7 punten.

Het geluidsbestand om te downloaden wordt gepresenteerd in het formaatWAV (u moet het downloaden en niet in de browser openen). Het is groot: bijvoorbeeld morsecode voor verzending"Griek reed over de rivier. ziet een Griek, een kankergezwel in de rivier. stak de hand van de Griek in de rivier, en de rivierkreeft greep de hand van de Griek. weegt daarin 209 KB(hoewel het alleen835 bits informatie).

Wil je je kracht testen? Niets is eenvoudiger.

Morsecode-melodieën:

Cyrillisch
Latijns
Morse code
Zingen
A
A
. —
O ja
B
IN
— . . .
ba-ki-te-kut
IN
W
. — —
vi-da-la
G
G
— — .
ga-ra-zhi
D
D
— . .
doe-mi-ki
E
E
.
Er bestaat
EN
V
. . . —
zhe-le-zi-sto
Z
Z
— — . .
voor-ka-ti-ki
EN
I
. .
ik-di
Y
J
. — — —
en kort
NAAR
NAAR
— . —
Hoe is het
L
L
. — . .
lu-na-ti-ki
M
M
— —
Moeder
N
N
— .
nummer
OVER
OVER
— — —
in de buurt van
P
P
. — — .
pi-la-po-yot
R
R
. — .
opnieuw sha-et
MET
S
. . .
si-ne-e
T
T

Dus
U
U
. . —
u-gedragen
F
F
. . — .
fi-li-mon-kuiken
X
N
. . . .
hee-mi-chi-te
C
MET
— . — .
tsap-li-na-shi
H
Nee
— — — .
cha-sha-naar-nee
Sch
Nee
— — — —
sha-ro-va-ra
SCH
Q
— — . —
sha-je-niet-sha
b, b
X
— . . —
dat-zachte-teken
Y
Y
— . — —
s-niet-doen
E
Nee
. . — . .
e-le-ron-chi-ki
YU
Nee
. . — —
Juliana
I
Nee
. — . —
Ik ben klein, ik ben klein

En hier zijn de melodieën van cijfers en de meest voorkomende karakters. Ik merk op dat in puur digitale teksten nul vaak wordt overgebracht met één streepje, zoals de letter T - dit diversifieert de transmissie op aangename wijze en elimineert de noodzaak om naar vijf streepjes achter elkaar te luisteren;)
Teken
Morse code
Zingen
0
— — — — —
nul-tot-o-ko-lo
1
. — — — —
en-slechts-één
2
. . — — —
Ik-ging-naar-de-berg
3
. . . — —
three-you-be-ma-lo, of I-ku-ka-ra-cha
4
. . . . —
che-ve-ri-te-ka
5
. . . . .
vijf-le-ti-e
6
— . . . .
po-zes-ti-be-ri
7
— — . . .
ja-ja-se-me-rik
8
— — — . .
acht-mo-go-i-di
9
— — — — .
maar-na-nee-na-mi
?
. . — — . .
waar moet ik het vragen
!
— — . . — —
door-ka-no-pri-ka-za
,
. — . — . —
en-zo-en-zo-en-zo
\ (scheidingsteken)
— . . . —
eens-de-li-te-ka