Audio Recorder for Vaadin - Vaadin Add-on Directory
Audio recording with real-time waveform visualization for Vaadin Flow. AI-agnostic — works with any transcription backend.
# Audio Recorder for Vaadin
Record audio from the microphone with **real-time frequency bars or waveform visualization** — all from pure Java. Zero JavaScript required.
## AI-Agnostic
The addon captures `byte[]` and delivers them to your server. YOU decide what to do with them:
```java
// OpenAI Whisper
AudioRecorder recorder = new AudioRecorder(audio ->
whisperService.transcribe(audio.bytes(), audio.mimeType())
);
// Google Gemini
AudioRecorder recorder = new AudioRecorder(audio ->
geminiService.transcribe(audio.bytes())
);
// Save to disk — no AI at all
AudioRecorder recorder = new AudioRecorder(audio -> {
Files.write(Path.of("recording.webm"), audio.bytes());
return "Saved!";
});
```
## Features
- Real-time frequency bars or oscilloscope waveform visualization
- Gain/level indicator bar
- Pause & resume recording
- Upload existing audio files
- Built-in playback of last recording
- Headless mode — hide UI, control from Java
- Max duration auto-stop
- 3 theme presets + full custom colors
- MIME type validation whitelist
## Quick Start
```java
AudioRecorder recorder = new AudioRecorder(audio ->
myService.transcribe(audio.bytes(), audio.mimeType())
);
recorder.addHandlerResultListener(e -> textArea.setValue(e.getResult()));
add(recorder);
```
## Browser Support
Chrome, Firefox, Edge, Safari 14.1+ (requires MediaRecorder + Web Audio API)
Source Code
View on GitHub
Audio Recorder for Vaadin version 0.1.0
Initial release — Audio recording with real-time waveform/frequency visualization for Vaadin Flow. Features: AudioHandler functional interface, pause/resume, file upload, headless mode, theme presets, gain indicator, max duration auto-stop.
Audio Recorder for Vaadin version 0.2.0
## Version 0.2.0 — Java 25 & Vaadin 25
Major compatibility update introducing Java 25 and Vaadin 25.3.5 support.
### Improvements
- Upgraded to Java 25 and Vaadin 25.
- Updated to Jakarta Servlet 6.1 and Jetty 12 EE11.
- Improved microphone lifecycle and browser resource cleanup.
- Strengthened audio validation with a 50 MiB payload limit.
- Separated demo sources from the production JAR.
- Added 7 automated tests and GitHub Actions CI.
- Updated documentation and packaging.
### Compatibility
- Requires Java 25 and Vaadin 25.
- Applications using Java 21 and Vaadin 24 should continue using version 0.1.0.
- No mandatory Spring Boot or AI provider dependencies.
### Release
https://github.com/geovannymcode/vaadin-audio-recorder/releases/tag/v0.2.0