Overview
We welcome and encourage contributions to WhisperKit! Whether you’re fixing bugs, improving documentation, or adding new features from the roadmap, your help is appreciated.Search the codebase for
TODO comments to find features yet to be built.Getting Started
Fork and Clone
Fork the repository
Fork WhisperKit to your personal GitHub account.
Development Environment Setup
Install Dependencies
Use the providedMakefile to set up your environment:
- Python dependencies for model tools
- Fastlane for testing automation
- Git LFS for large file support
- Pre-commit hooks
Download Models
Download models for local testing:Ensure git-lfs is installed before downloading models.
Making Changes
Development Workflow
- Implement your changes - Follow the existing coding style and patterns
- Update documentation - Add or update docs for new features
- Add tests - Include unit tests for bug fixes and new features
- Test your changes - Build and test before committing
Building WhisperKit
- Command Line
- Xcode
Testing Changes
Unit Tests
Unit Tests
Run the test suite:Or in Xcode:
⌘U to run all testsBenchmark Tests
Benchmark Tests
Example Apps
Example Apps
Test with the provided example applications:
- WhisperAX: Main demo app with full features
- TTSKitExample: Text-to-speech examples
- ServeCLIClient: Local server client examples
Code Guidelines
Coding Style
- Swift Style: Follow Swift API Design Guidelines
- Naming: Use clear, descriptive names for functions and variables
- Comments: Add comments for complex logic and public APIs
- Documentation: Use Swift DocC-style documentation comments
Code Organization
Commit Messages
Write clear, meaningful commit messages:Documentation Requirements
When adding new features:- ✅ Add inline code documentation
- ✅ Update relevant markdown documentation
- ✅ Include usage examples
- ✅ Update API references if applicable
Submitting Changes
Before Submitting
Create a Pull Request
Open a Pull Request
- Go to the WhisperKit repository
- Click “New Pull Request”
- Select your fork and branch
- Fill out the PR template with:
- Clear title
- Description of changes
- Related issue numbers
- Testing performed
Pull Request Template
Types of Contributions
Bug Fixes
Found a bug? Submit a fix with:
- Clear bug description
- Steps to reproduce
- Test case demonstrating the fix
New Features
Adding functionality? Include:
- Feature description and use case
- Tests and documentation
- Examples of usage
Documentation
Improving docs:
- Fix typos and errors
- Add examples and clarifications
- Improve organization
Performance
Performance improvements:
- Benchmark before and after
- Explain the optimization
- Ensure functionality preserved
Working with Models
Creating Custom Models
WhisperKit supports fine-tuned models via whisperkittools:- Fine-tune Whisper using the tools repo
- Convert to CoreML format
- Upload to HuggingFace
- Load in WhisperKit:
Contributing Benchmark Results
Help expand device coverage:- Run benchmarks on your devices
- Results saved to
fastlane/upload_folder/benchmark_data - Submit results to whisperkit-evals-dataset
Roadmap & Feature Requests
Public Roadmap
Check our roadmap for planned features:- View open issues
- Search code for
TODOcomments - Join Discord discussions
Requesting Features
To request a new feature:- Check if it already exists in issues
- Create a new issue with:
- Clear description
- Use case and motivation
- Proposed implementation (if applicable)
- Label as
enhancement
Getting Help
Discord Community
Join our Discord for questions and discussions
GitHub Issues
Report bugs or request features
Documentation
Browse the documentation
Email Support
Contact the team directly
Recognition
After your pull request is merged:- Your contribution will be listed in the project
- You’ll be added to the contributors list
- Major contributions may be highlighted in release notes
Thank you for making WhisperKit better for everyone!
Next Steps
View Benchmarks
Learn about running benchmarks
FAQ
Common questions answered
Model Catalog
Explore available models
API Reference
Detailed API documentation