Convert spoken requirements into structured specifications or GitHub issues using AI transcription and LLM processing.
Speak your ideas, and this app turns them into actionable work. Record or upload audio, and the app transcribes your words and uses AI to generate structured requirements β or creates a GitHub issue that Kiro's Autonomous Agent picks up, implements, and delivers as a Pull Request. No typing required.
In Local mode, the generated specs drive Kiro IDE to implement the entire application through specs-driven development. In GitHub mode, Kiro's Autonomous Agent picks up the issue and raises a PR automatically.
π€ Fun fact: This entire project was created using Kiro, an AI-powered development assistant that helped design, implement, and document the application from initial concept to deployment.
| Feature | Description |
|---|---|
| ποΈ Browser Recording | Record requirements directly from your microphone |
| π File Upload | Upload .wav audio files |
| βοΈ Amazon Transcribe | Cloud-based speech-to-text |
| π¦ Parakeet MLX | On-device transcription for Apple Silicon (optional) |
| π Local Mode | Generate requirements.md + tasks.md in Kiro spec format |
| π GitHub Mode | Create GitHub issues directly from voice input |
| π€ Configurable Model | Use any Bedrock model (Claude Haiku, Sonnet, etc.) |
- uv package manager
- Python 3.12+
- AWS account with access to:
- S3 β audio file storage
- Amazon Transcribe β speech-to-text
- Amazon Bedrock β LLM inference (Claude model access required)
- AWS credentials configured (
~/.aws/credentialsor environment variables)
git clone https://github.com/aws-samples/sample-voice-driven-development.git
cd sample-voice-driven-development
uv synccp .env.example .envEdit .env with your values:
S3_BUCKET_NAME=your-s3-bucket-name
BEDROCK_MODEL_ID=eu.anthropic.claude-haiku-4-5-20251001-v1:0
# Optional: GitHub issue creation mode
GITHUB_TOKEN=ghp_your_token_here
GITHUB_REPO=owner/repouv run streamlit run streamlit_app.pyOpen http://localhost:8501 in your browser.
With AWS credentials volume mount:
docker build -t voice-driven-dev .
docker run -p 8501:8501 \
-e S3_BUCKET_NAME=your-bucket \
-v ~/.aws:/home/appuser/.aws:ro \
-v $(pwd)/projects:/app/projects \
voice-driven-devWith environment variables:
docker run -p 8501:8501 \
-e AWS_ACCESS_KEY_ID=your_key \
-e AWS_SECRET_ACCESS_KEY=your_secret \
-e S3_BUCKET_NAME=your-bucket \
-v $(pwd)/projects:/app/projects \
voice-driven-dev- Choose input β Record audio via microphone or upload a
.wavfile - Select output mode β Local (specs + tasks) or GitHub (issue creation)
- Process β Click the process button to transcribe and generate output
- Download β Get your
requirements.md,tasks.md, or view the GitHub issue
| Mode | Output | Requires |
|---|---|---|
| Local | projects/<name>/requirements.md + tasks.md |
S3 bucket |
| GitHub | GitHub issue with kiro label β triggers Kiro Autonomous Agent to pick up and implement the task |
GITHUB_TOKEN + GITHUB_REPO |
For on-device transcription on Apple Silicon (skips S3 + Transcribe entirely):
brew install ffmpeg
uv sync --extra local-transcribeSelect Parakeet MLX in the sidebar transcription engine dropdown.
Use Kiro's Autonomous Agent to close the loop entirely β speak your requirements, have them logged as GitHub issues, and let Kiro automatically pick them up, implement the code, and raise a Pull Request.
π€ Voice Input βββΆ π GitHub Issue βββΆ π€ Kiro Agent βββΆ π¦ Pull Request
- You speak your requirements into the Streamlit app (GitHub mode)
- The app creates a GitHub issue with structured acceptance criteria
- Kiro Autonomous Agent detects the new issue and starts working on it
- Kiro implements the changes and opens a PR for your review
Follow the Kiro Autonomous Agent docs to set up:
- Open Kiro and navigate to Autonomous Agent
- Connect your GitHub account and select the target repository
- Configure which issue labels Kiro should pick up (e.g.,
kiro)
- Go to GitHub β Settings β Developer settings β Personal access tokens
- Create a Fine-grained token scoped to your target repository with:
- Issues: Read & Write
- Copy the token
Add the token and repo to your .env:
GITHUB_TOKEN=github_pat_xxxxxxxxxxxx
GITHUB_REPO=owner/repo- Run the app:
uv run streamlit run streamlit_app.py - In the sidebar, select π GitHub β open issue directly
- Record or upload your audio requirements
- Click Process β a GitHub issue is created with the
kirolabel - Kiro Autonomous Agent picks up the issue, implements the code, and opens a PR
π‘ Tip: The app automatically applies the
kirolabel to created issues. Make sure your Kiro Agent is configured to watch for this label so it triggers automatically.
flowchart LR
A[π€ Voice Input] --> B[π£οΈ Transcribe]
B --> C[π€ Bedrock Claude]
C --> D[π Local Specs β Kiro IDE]
C --> E[π GitHub Issue β Kiro Agent β PR]
Your IAM credentials need the following permissions:
| Service | Actions |
|---|---|
| S3 | s3:PutObject, s3:GetObject on your bucket |
| Transcribe | transcribe:StartTranscriptionJob, transcribe:GetTranscriptionJob |
| Bedrock | bedrock:InvokeModel for your configured model |
| Variable | Required | Default | Description |
|---|---|---|---|
S3_BUCKET_NAME |
Yes* | β | S3 bucket for audio storage |
BEDROCK_MODEL_ID |
No | eu.anthropic.claude-haiku-4-5-20251001-v1:0 |
Bedrock model ID |
AWS_REGION |
No | Auto-resolved from model prefix | AWS region override |
GITHUB_TOKEN |
No | β | Enables GitHub issue mode |
GITHUB_REPO |
No | β | Target repo (owner/repo) |
PARAKEET_MODEL_ID |
No | mlx-community/parakeet-tdt-0.6b-v2 |
Local transcription model |
* Not required when using Parakeet MLX engine in local-only mode.
- Kiro IDE Docs β Specs-driven development with Kiro
- Kiro Autonomous Agent Docs β Let Kiro pick up GitHub issues and raise PRs
- Kiro Blog β News, tutorials, updates from the Kiro team - find it all here
See CONTRIBUTING.md for guidelines.
See CONTRIBUTING.md for reporting vulnerabilities.
This project is licensed under the MIT-0 License.