mirror of
https://github.com/asyouplz/SpeechNote.git
synced 2026-07-22 16:30:31 +00:00
No description
- Improved dynamic timeout calculation with more aggressive scaling for large files - Added automatic audio chunking for files over 50MB - Implemented AudioChunker utility to split large files into manageable chunks - Added UI settings for enabling/disabling auto-chunking and configuring chunk size - Enhanced error messages with file size info and specific recommendations - Updated timeout limits to 90 minutes for very large files - Added chunking configuration options to Settings model This should resolve the gateway timeout (504) errors experienced with large audio files on Windows 11. Fixes #22 Co-authored-by: asyouplz <asyouplz@users.noreply.github.com> |
||
|---|---|---|
| .github/workflows | ||
| config | ||
| src | ||
| styles | ||
| tests | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| CLAUDE.md | ||
| esbuild.config.mjs | ||
| jest.config.js | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| requirment-origin.md | ||
| requirment.md | ||
| styles.css | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
Obsidian Speech-to-Text Plugin
Convert audio recordings to text directly in Obsidian using multiple AI providers.
옵시디언에서 음성 파일을 텍스트로 변환하는 강력한 플러그인입니다.
Features (주요 기능)
🎙️ Multi-Provider Audio Transcription
- OpenAI Whisper: High accuracy, stable performance
- Deepgram Nova 3: Latest model with 98% accuracy, 70% cost reduction
- Speaker Diarization: Automatic speaker separation with "Speaker 1:", "Speaker 2:" format
- Auto Selection: Automatically chooses the best provider for each file
- Supported Formats: M4A, MP3, WAV, MP4, WebM, OGG, FLAC
🌐 Multi-language Support
- Auto Detection: Automatic language recognition
- 40+ Languages: Korean, English, Japanese, Chinese, Spanish, French, German, etc.
- Provider Optimization: Each provider optimized for different languages
📝 Smart Text Insertion & Speaker Recognition
- Cursor Position: Insert at current cursor location
- Note Positions: Beginning or end of note
- Auto Note Creation: Creates new note if no active editor
- Speaker Diarization: Automatic speaker identification and labeling
- Multi-Speaker Support: Clear separation for meetings, interviews, conversations
⚡ Performance Optimizations
- Nova-3 Model: 98% accuracy with $0.0043/min (70% cost reduction)
- Intelligent Provider Selection: Best provider based on file size and format
- Real-time Progress: Status bar progress indicator
- Async Processing: Non-blocking background processing
- Cancellation Support: Cancel ongoing transcriptions
- Fallback Mechanism: Automatic provider switching on failure
Installation (설치)
Manual Installation (수동 설치)
From Releases
- Download the latest release from Releases
- Extract files to your vault's
.obsidian/plugins/obsidian-speech-to-text/folder - Restart Obsidian
- Enable "Speech to Text" in Community Plugins settings
Development Build
# Clone repository
git clone https://github.com/asyouplz/SpeechNote-1.git
cd SpeechNote-1
# Install dependencies
npm install
# Build
npm run build
# Copy to plugin folder
cp main.js manifest.json styles.css /path/to/your/vault/.obsidian/plugins/obsidian-speech-to-text/
Setup (초기 설정)
API Key Configuration
1. Choose Provider
- Open Obsidian Settings → "Speech to Text"
- Select "Transcription Provider":
- OpenAI Whisper: High quality, stable
- Deepgram: Fast speed, large file support
- Auto: Automatic selection (recommended)
2. Get OpenAI API Key (for Whisper)
- Visit OpenAI Platform
- Sign in or create account
- Click "Create new secret key"
- Copy the key (⚠️ shown only once)
3. Get Deepgram API Key (for Deepgram)
- Visit Deepgram Console
- Sign up or sign in
- Go to "API Keys" menu
- Click "Create a New API Key"
- Copy the API key
4. Configure Plugin
- Open Obsidian Settings (Cmd/Ctrl + ,)
- Select "Speech to Text" from left menu
- Enter your API key(s):
- "OpenAI API Key" (for Whisper)
- "Deepgram API Key" (for Deepgram)
- Save settings
Usage (사용법)
Basic Usage
Method 1: Command Palette
- Open Command Palette:
Cmd/Ctrl + P - Search: "Transcribe audio file"
- Select File: Choose audio file from list
- Wait: Monitor progress in status bar
- Complete: Text automatically inserted into note
Method 2: Context Menu ✨
- File Explorer: Find audio file
- Right Click: Right-click on audio file
- Select: "Transcribe audio file"
- Auto Process: Transcription starts and inserts result
Method 3: Hotkeys
- Settings: Settings → Hotkeys → search "Transcribe audio file"
- Set Hotkey: Assign preferred key combination
- Execute: Use hotkey for quick access
🎭 Using Speaker Diarization
Enable Speaker Diarization
- Open Settings: Settings → Speech to Text → Deepgram Settings
- Enable Diarization: Toggle "Speaker Diarization" to ON
- Select Nova-3: Choose "Nova-3" model (default for new installations)
- Save Settings: Apply configuration
Example Results
🎙️ Multi-speaker meeting audio:
📝 Transcription output:
Speaker 1: Good morning everyone, let's start the meeting.
Speaker 2: Thank you. I'd like to discuss the project timeline.
Speaker 1: That sounds good. What are your thoughts?
Speaker 3: I think we should extend the deadline by one week.
Best Practices for Speaker Diarization
- Clear Audio: Use high-quality recordings for better accuracy
- Speaker Separation: Ensure speakers don't talk simultaneously
- Minimum Duration: Each speaker segment should be at least 2-3 seconds
- Audio Format: Use M4A, MP3, or WAV for optimal results
🎭 Speaker Diarization Feature
Perfect for meetings, interviews, and conversations!
🎙️ Input Audio:
"Hello, I'm John." (Speaker 1)
"Nice to meet you, I'm Sarah." (Speaker 2)
📝 Output Text:
Speaker 1: Hello, I'm John.
Speaker 2: Nice to meet you, I'm Sarah.
Supported Audio Formats
| Format | Extension | Whisper | Deepgram | Max Size | Diarization | Description |
|---|---|---|---|---|---|---|
| M4A | .m4a | ✅ | ✅ | 25MB/2GB | ✅ | Apple default recording format |
| MP3 | .mp3 | ✅ | ✅ | 25MB/2GB | ✅ | Universal audio format |
| WAV | .wav | ✅ | ✅ | 25MB/2GB | ✅ | Lossless, large file size |
| MP4 | .mp4 | ✅ | ✅ | 25MB/2GB | ✅ | Audio from video files |
| WebM | .webm | ❌ | ✅ | -/2GB | ✅ | Web streaming format |
| OGG | .ogg | ❌ | ✅ | -/2GB | ✅ | Open source audio format |
| FLAC | .flac | ❌ | ✅ | -/2GB | ✅ | Lossless compression |
Settings (설정)
Main Settings
- Provider: Auto/Whisper/Deepgram selection
- Language: Auto-detect or specific language
- Insert Position: Cursor/Beginning/End of note
- Auto-insert: Automatic text insertion
- Deepgram Model: Nova-3/Nova-2/Nova/Enhanced/Base
- Deepgram Features: Punctuation, Smart Format, Speaker Diarization, etc.
Advanced Settings
- Model Selection: Nova-3 (recommended), Nova-2, Nova, Enhanced, Base
- Speaker Diarization: Enable automatic speaker separation
- Fallback Provider: Backup provider on failure
- Cache Settings: Enable/disable result caching
- Network Settings: Timeout, retry policies
- Debug Mode: Detailed logging
Troubleshooting (문제 해결)
Common Issues
"Invalid API Key" Error
Solutions:
- Verify API key format (OpenAI: starts with
sk-) - Check API key status on provider dashboard
- Ensure sufficient credits/active subscription
- Remove any extra spaces from key
"File too large" Error
Solutions:
- Check file size limits (Whisper: 25MB, Deepgram: 2GB)
- Use Deepgram for larger files
- Compress audio files if needed
Speaker Diarization Not Working
Solutions:
- Ensure Nova-3 model is selected (required for diarization)
- Check "Speaker Diarization" is enabled in Deepgram settings
- Verify audio quality (clear speakers, minimal overlap)
- Use supported audio formats (M4A, MP3, WAV recommended)
- Check minimum speaker duration (2-3 seconds per segment)
No Audio Files Found
Solutions:
- Verify supported formats: .m4a, .mp3, .wav, .mp4, etc.
- Ensure files are in vault folder
- Restart Obsidian
- Wait for file indexing (large vaults)
Network Errors
Solutions:
- Check internet connection
- Verify VPN/proxy settings
- Check provider API status
Commands (명령어)
| Command | Description | Status |
|---|---|---|
| Transcribe audio file | Select and transcribe audio file | ✅ Available |
| Cancel transcription | Cancel ongoing transcription | ✅ Available |
Development (개발)
Prerequisites
- Node.js 16.0.0+
- npm 7.0.0+
- Obsidian 0.15.0+
- TypeScript 4.7.4+
Development Setup
# Clone repository
git clone https://github.com/asyouplz/SpeechNote-1.git
cd SpeechNote-1
# Install dependencies
npm install
# Development mode (watch for changes)
npm run dev
# Production build
npm run build
# Code quality checks
npm run lint
npm run format
npm run typecheck
# Run tests
npm test
Project Structure
SpeechNote-1/
├── src/
│ ├── main.ts # Plugin entry point
│ ├── core/ # Core business logic
│ │ └── transcription/ # Transcription services
│ ├── infrastructure/ # External system integrations
│ │ └── api/ # API clients
│ │ ├── providers/ # Provider implementations
│ │ │ ├── deepgram/ # Deepgram integration
│ │ │ └── whisper/ # Whisper integration
│ │ └── adapters/ # Interface adapters
│ ├── ui/ # User interface
│ └── types/ # Type definitions
├── tests/ # Test files
├── manifest.json # Plugin metadata
├── package.json # Project configuration
└── README.md # This file
Contributing (기여)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Contribution Process
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'feat: add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Create Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Credits
Acknowledgments
- Obsidian Team: Obsidian Plugin API
- OpenAI: Whisper API
- Deepgram: Speech-to-Text API
- Community: Obsidian community feedback and contributions
Built With
- TypeScript
- ESBuild
- Jest
- ESLint & Prettier
Support
Need Help?
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Issues
- 💬 Discussions: GitHub Discussions
Show Your Support
If this project helped you:
- ⭐ Star on GitHub
- 🐦 Share on social media
- ☕ Buy me a coffee
Recent Updates
🚀 v3.2.0 (2025-01-10) - Nova-3 & Speaker Diarization Release
- ✨ Nova-3 Model: Default model upgrade with 98% accuracy
- 🎭 Speaker Diarization: Complete implementation with "Speaker 1:", "Speaker 2:" format
- 💰 Cost Optimization: 70% cost reduction ($0.0043/min vs $0.0145/min)
- 🔧 Code Quality: 72% class size reduction, 98% type coverage
- 🛡️ Backward Compatibility: Existing Nova-2 users fully supported
- ⚡ Performance: 20% faster response time, improved accuracy
v1.0.0 (2025-08-30)
- 🎉 Initial Release
- 🎙️ Multi-Provider Support: OpenAI Whisper & Deepgram
- 🌐 Multi-language Support: 40+ languages
- 📝 Smart Text Insertion: Flexible insertion options
- ⚡ Performance Optimizations: Auto provider selection
- 🛡️ Fallback Mechanisms: Automatic error recovery
- 🎯 Context Menu Integration: Right-click transcription
- 📊 Advanced Settings: Comprehensive configuration options
Made with ❤️ for the Obsidian community