This experimental project captures radio communications from Private Mobile Radio (walkie-talkie) devices operating on the 446 MHz band, using the HackRF One or any compatible software-defined radio (SDR), and converts the speech to text in offline mode.
- Listen one selected PMR 446 MHz channels using HackRF One & GNURadio.
- Automatically transcribe radio communications into text using OpenAI's Whisper AI (multi-language support).
- Bonus: Listen to all PMR 446 MHz channels using HackRF One.
This project is ideal for enthusiasts and developers who want to bridge radio communications with modern AI transcription technologies.
PMR446_DEMO.mp4
PMR446 use specific frequencies for their 8 primary channels. Below are the frequencies associated with each channel:
- Channel 1: 446.00625 MHz
- Channel 2: 446.01875 MHz
- Channel 3: 446.03125 MHz
- Channel 4: 446.04375 MHz
- Channel 5: 446.05625 MHz
- Channel 6: 446.06875 MHz
- Channel 7: 446.08125 MHz
- Channel 8: 446.09375 MHz
These frequencies are standardized for PMR446 devices in Europe, ensuring compatibility between different models and brands of talkie-walkies that use this standard.
Prerequisites :
- Gnuradio installed, my version is 3.10.1.1 (Python 3.10.12)
- Cuda driver (in my case with nvidia RTX4060)
- RTL/SDR Receiver
- My personnal correction for my device is -6.7 ppm (adjust as necessary)
- Run transcribe.py first (See Run transcribe.py section).
- Run
pmr446-select-channel.grc
in GNURadio (setup ip/port) - Choose your channel
- Speak over PMR device
pyenv --version # pyenv 2.4.17
python --version # Python 3.9.9
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python transcribe.py --language fr # french speech, listen on 127.0.0.1:12345 by default
python transcribe.py --language fr --model turbo # by default turbo model is used
Prerequisites :
- Gnuradio installed, my version is 3.10.1.1 (Python 3.10.12)
- RTL/SDR Receiver
- Multiple cpu core a required for this project - (1 core per xlating filter).
- My personnal correction for my device is -6.7 ppm (adjust as necessary)
- Run
pmr446-listen-all.grc
project - Speak over PMR device