tag:blogger.com,1999:blog-3326773214329183284.post6677160132766261062..comments2024-03-26T01:13:52.297-04:00Comments on Ham Radio Blog by AG1LE: New real-time deep learning Morse decoderag1lehttp://www.blogger.com/profile/16415319751367496314noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3326773214329183284.post-86368778211948912442021-12-04T14:02:31.383-05:002021-12-04T14:02:31.383-05:00Hi, I don't know if it could help, but maybe y...Hi, I don't know if it could help, but maybe you could have an overlapping frame : if your frame is during 8 seconds, you could start the next 2 seconds before the end of the previous and decode the overlapping part twice. This way you may be certain that a character not ended in the first frame will be found in the next. To avoid duplicate characters, you could store an absolute starting time, if you get 2 characters starting at the time (and frequency, of course), you keep only the longer one.<br />f1rumhttps://f1rum.frnoreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-26054801369567164872021-06-12T00:58:16.066-04:002021-06-12T00:58:16.066-04:00Thanks for your sincere reply. In addition to your...Thanks for your sincere reply. In addition to your solutions, I've also thought about learning a model that recognizes spaces between strings, but it's going to be too complicated.<br /> Speech recognition technologies are being commercialized these days, so there must be the simple solutions. I'll let you know after I find out.<br /><br />Thank youadhoc0909https://www.blogger.com/profile/14144856245663964915noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-87927877877259496372021-06-11T14:45:21.981-04:002021-06-11T14:45:21.981-04:00Hi Unknown
Thanks for your feedback. I have not ...Hi Unknown<br />Thanks for your feedback. I have not solved the problem of current image frame cutting Morse character in parts yet. I have tested a few possible solutions: (1) make the image frame much longer so that one frame can contain many Morse characters. This way the overall decoding error rate is lower, as the problem appears less frequently. (2) Have overlapping image frames and use text post processing to find overlapping decoded characters and eliminate mis-decoded characters in between the frames. These methods provide some improvements but don't eliminate the problem. <br /><br />Do you have some other / better ideas? ag1lehttps://www.blogger.com/profile/16415319751367496314noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-90554942919535823952021-06-11T06:43:03.136-04:002021-06-11T06:43:03.136-04:00Dear mauri,
First of all, thank you for your arti...Dear mauri,<br /><br />First of all, thank you for your article and I read it very interestingly.<br /><br />I have one question for you. One of the problems with the real-time decoder you mentioned in the text is the problem when the current image frame cuts the Morse character into parts. Have you solved this problem by any chance? Or have you tought about how to solve it?adhoc0909https://www.blogger.com/profile/14144856245663964915noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-44227752457410931012020-08-03T16:18:53.639-04:002020-08-03T16:18:53.639-04:00I just saw your answer by chance ... I don't k...I just saw your answer by chance ... I don't know why I missed it.<br />Thank you for your work, I will review this and follow your work closely.<br />:) 73 F4HTBF4HTBhttps://www.blogger.com/profile/14724272337272687893noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-52259824179400946052020-04-27T10:48:10.602-04:002020-04-27T10:48:10.602-04:00Hi Olivier
> I have a question, why use 128x32...Hi Olivier <br />> I have a question, why use 128x32 image and why décode entière Word?<br /><br />The network dimensions of the model can be changed. I kept the 128x32 of the original model (see https://ag1le.blogspot.com/2019/02/training-computer-to-listen-and-decode.html) because it allows to have multiple characters (or even words at higher CW speed) in the 4 second time window. If you look at the decoder code, there is actually 3 different decoders - BestPath, BeamSearch and WordBeamSearch. The latter two apply language model to improve detection of words in the corpus used for training. This corpus could include callsigns and other commonly used words in CW. <br /><br />> A FFT in real time.<br />> Detect peaks and therefore a probable cw emission.<br /><br />This is exactly what this software is doing. See https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L71-L80 - this is where signal is converted to spectrogram using FFT. This line https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L142 detects the peak frequency of the signal and this line https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L146 takes +/- 16 Hz spectrum around the peak (so essentially a 32 Hz bandpass filter). <br /><br />> In order to have signals that can really take shape, you have to do a sliding FFT on two buffers to combine the fairly fine resolution of a single CW signal probably 100hz wide and a resolution of the time evolution of at least 10ms per line ( or the equivalent of one half "dit" per line).<br /><br />Take a look at these lines: https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L25-L27 - I am taking overlapping FFT frames and also padding (see https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L78) to get the required spectral and temporal resolution. <br /><br />> I think that with one last trick to separate the characters and analyze each of the characters, your decoder will be operational.<br /><br />I did some work over the weekend - these lines https://github.com/ag1le/deepmorse-decoder/blob/master/specgram.py#L83-L109 are looking near matches between consecutive frames and appending new characters as they get decoded. <br /><br />Thanks for your thoughtful feedback. <br /><br />br<br />Mauri AG1LE <br /><br /><br />ag1lehttps://www.blogger.com/profile/16415319751367496314noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-66739841785108633732020-04-26T17:42:51.488-04:002020-04-26T17:42:51.488-04:00Dear Mauri,
First, thanks for your very interist...Dear Mauri, <br /><br />First, thanks for your very interisting and futuring work!<br />I have a question, why use 128x32 image and why décode entière Word?<br /><br />I worked on a wideband CW 192khz I / Q decoder.<br />What I get out of it is that it is largely possible to do:<br />A FFT in real time.<br />Detect peaks and therefore a probable cw emission.<br />Recover an array of this FFT only on the "colone" of the signal therefore the equivalent of an image of 1px by x lines.<br />In order to have signals that can really take shape, you have to do a sliding FFT on two buffers to combine the fairly fine resolution of a single CW signal probably 100hz wide and a resolution of the time evolution of at least 10ms per line ( or the equivalent of one half "dit" per line).<br />I think that with one last trick to separate the characters and analyze each of the characters, your decoder will be operational.<br />Starting from human analysis, we do this well to make our work easier ...<br /><br />73 F4HTBF4HTBhttps://www.blogger.com/profile/14724272337272687893noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-56428171165265868602020-04-26T17:42:39.900-04:002020-04-26T17:42:39.900-04:00Dear Mauri,
First, thanks for your very interist...Dear Mauri, <br /><br />First, thanks for your very interisting and futuring work!<br />I have a question, why use 128x32 image and why décode entière Word?<br /><br />I worked on a wideband CW 192khz I / Q decoder.<br />What I get out of it is that it is largely possible to do:<br />A FFT in real time.<br />Detect peaks and therefore a probable cw emission.<br />Recover an array of this FFT only on the "colone" of the signal therefore the equivalent of an image of 1px by x lines.<br />In order to have signals that can really take shape, you have to do a sliding FFT on two buffers to combine the fairly fine resolution of a single CW signal probably 100hz wide and a resolution of the time evolution of at least 10ms per line ( or the equivalent of one half "dit" per line).<br />I think that with one last trick to separate the characters and analyze each of the characters, your decoder will be operational.<br />Starting from human analysis, we do this well to make our work easier ...<br /><br />73 F4HTBF4HTBhttps://www.blogger.com/profile/14724272337272687893noreply@blogger.comtag:blogger.com,1999:blog-3326773214329183284.post-71998014182697843692020-04-13T02:48:45.128-04:002020-04-13T02:48:45.128-04:00Exciting! Exciting! k6bbyhttps://www.blogger.com/profile/07121965684808294244noreply@blogger.com