Metadata-Version: 2.1
Name: inter-morse
Version: 1.0.2
Summary: Interpret wav audio files to Morse code and translate it.
Home-page: https://github.com/cnyllou/inter-morse
Author: Cnyllou
Author-email: cnyllou@gmail.com
License: GPLv3
Project-URL: Source, https://github.com/cnyllou/inter-morse/
Project-URL: Tracker, https://github.com/cnyllou/inter-morse/issues
Description: > Just a quick side project
        
        ---------------
        
        ## inter-morse.py
        
        This script has 2 feature, one is a decoder, the other one is an unnecessary one, noise reduction feature, that uses `sox` *nix utility.
        
        ### Usage
        
        ```bash
        usage: python -m inter_morse [-h] [-l LEVEL] {clean,decode} ... file
        
        positional arguments:
          {clean,decode}        Commands for the decoder
            clean               Clean up the audio
            decode              Decode morse code
          file                  Input file name
        
        optional arguments:
          -h, --help            show this help message and exit
          -l LEVEL, --level LEVEL
                                Verbosity level
        ```
        
        ### Morse Audio Decoder
        
        This feature takes in a `.wav` file and does the following.
        
        1. With `pydub` transforms it into an audio segment
        2. Coverts all the values that are above the `max - (max * max_threshhold)` to 1 and others to 0
        3. Iterated through all the binary values, when the value switches to a different one:
        - Length is calculated in milliseconds and then based on the length, the morse code symbol is determined.
        
        ```python
        DIH = 100  # On default and the same length for symbol space
        DAH = DIH * 3  # The same length is assigned for letter spacing space
        SPACE = DIH * 7  # The space between words
        ```
        
        4. Reads the `codes.csv` file and assigns it to a dictionary.
        5. Finally the characters separated by the Character space are compared against the dictionary and translated
        - Unknown characters are assigned `?`
        - Word spaces are translated to a space and letter space is assigned to an empty string
        
        ### Options
        
        `-d | --dih` - The length of DIH symbol in ms (will implement a detection for this) \
        
        - 100ms is good enough for 15 WPM (tested for PARIS)
        - 50-60ms - 20 WPM
        - 25ms can do 50 WPM
        
        `-l | --level` - The verbosity of the output, haven't done much thinking with this, but 0 is for all output.
        
        ### Audio De-noiser
        
        I thought I needed this feature, but will maybe improve it later, haven't tested it much, but all it does is
        
        1. Takes a `.wav` file
        2. Finds all 'silence' segments what are passed a given threshold ('-33 dBFS' on default)
        2. Runs `sox` on every segment to create a noise profile
        3. Passes the input file through all of the generated profiles
        4. Exports a cleaned version of the audio file in `export` directory
        
        ## To Do
        
        - [	] Improve the code for better detection
        - [	] Add an encoder from text to sound
        - [	] Add comparison option for testing
        - [ ] Add Dynamic WPM detection (so you don't have to change `-d` manually)
        
        
        ## Resources
        
        - [Good online decoder](https://morsecode.world/international/decoder/audio-decoder-adaptive.html) also explains how it works.
        - [Morse code generator](https://morsecode.world/international/translator.html) that I used for generating some samples.
        - [In depth about Morse code](https://en.wikipedia.org/wiki/Morse_code#:~:text=For%20instance%2C%20%22Q%22%20in,%22Did%20she%20like%20it.%22)
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Description-Content-Type: text/markdown
