A web application for extracting BWF (Broadcast Wave Format) markers from WAV files which are written for example by Zoom H5 Handy Recorder and converting them to Audacity-compatible label files which can be imported using "File → Import → Labels" in Audacity.
Free to use online demo is available at: https://bwf.projecttac.com
- Upload multiple WAV files with embedded BWF marker data
- Extract markers using the
bwfmetaeditcommand-line tool - Convert XML marker data to Audacity label format
- Download processed label files for import into Audacity
- Modern web interface with drag-and-drop support
- Docker containerization for easy deployment
- Node.js 18+ (for local development)
- Docker and Docker Compose (for containerized deployment)
bwfmetaedittool (compiled from source in Docker image)
-
Clone this repository:
git clone <repository-url> cd bwf-marker-extractor
-
Build and run with Docker Compose:
docker-compose up --build
-
Open your browser and navigate to
http://localhost:3000
-
Install dependencies:
npm install
-
Install
bwfmetaediton your system:- Ubuntu/Debian: Compile from source (see BWFMetaEdit GitHub)
sudo apt-get install git automake autoconf libtool pkg-config make g++ zlib1g-dev git clone https://github.com/MediaArea/BWFMetaEdit.git cd BWFMetaEdit/Project/GNU/CLI ./autogen.sh && ./configure && make && sudo make install
- macOS:
brew install bwfmetaedit - Windows: Download from MediaArea website
- Ubuntu/Debian: Compile from source (see BWFMetaEdit GitHub)
-
Build the project:
npm run build
-
Start the server:
npm start
Or for development with auto-reload:
npm run dev
-
Open your browser and navigate to
http://localhost:3000
- Upload: Users can upload one or more WAV files containing BWF marker data
- Extract: The server uses
bwfmetaeditto extract metadata as XML - Convert: The XML is parsed and converted to Audacity label format
- Download: Users can download the generated label files
GET /- Main web interfacePOST /upload- Upload WAV files for processingGET /download/:filename- Download processed label files
- WAV files with embedded BWF marker data
- Text files in Audacity label format:
start_time end_time label 0.000000 0.000000 Marker 1 30.500000 30.500000 Marker 2
Environment variables:
PORT- Server port (default: 3000)NODE_ENV- Environment (development/production)MAX_FILE_SIZE_MB- Maximum file size per upload in MB (default: 100)
├── src/
│ ├── server.ts # Main server file
│ └── services/
│ └── marker-converter.ts # XML to label conversion logic
├── public/
│ └── index.html # Frontend interface
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose setup
└── package.json # Node.js dependencies
npm run build # Compile TypeScript
npm run watch # Watch mode for developmentUpload test WAV files with BWF markers and verify:
- Files are processed without errors
- Label files are generated correctly
- Labels can be imported into Audacity
-
"bwfmetaedit not found"
- Ensure
bwfmetaeditis installed and in PATH - Use Docker image which includes the tool
- Ensure
-
"No markers found"
- Verify WAV file contains BWF marker data
- Check XML output for correct structure
-
Upload fails
- Ensure files are valid WAV format
- Check file size limits
Check server logs for detailed error information:
docker-compose logs -f bwf-marker-extractorMIT License - see LICENSE file for details
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request