No description
Find a file
claude[bot] e4a6192f41 Fix Deepgram timeout issues for large audio files
- 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>
2025-09-17 06:52:01 +00:00
.github/workflows Merge pull request #2 from asyouplz/feature/phase4-testing-optimization 2025-08-26 20:31:32 +09:00
config Add comprehensive Deepgram infrastructure enhancements 2025-09-10 18:16:20 +09:00
src Fix Deepgram timeout issues for large audio files 2025-09-17 06:52:01 +00:00
styles feat: Multi-Provider Settings UI Update - Enhanced UX with Tabbed Navigation 2025-08-29 00:29:25 +09:00
tests fix: Implement provider-specific file size limits for Deepgram 2025-09-05 02:06:32 +00:00
.gitignore Add comprehensive Deepgram infrastructure enhancements 2025-09-10 18:16:20 +09:00
.prettierignore Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
.prettierrc Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
CLAUDE.md fix: 옵시디언 플러그인 UI 및 사용성 문제 4가지 수정 2025-08-30 13:44:25 +09:00
esbuild.config.mjs Consolidate duplicate configuration files 2025-09-10 19:24:48 +09:00
jest.config.js Consolidate duplicate configuration files 2025-09-10 19:24:48 +09:00
manifest.json feat: v1.0.0 초기 릴리즈 - Deepgram 빈 응답 문제 해결 및 언어 설정 수정 2025-08-30 23:46:54 +09:00
package-lock.json Add comprehensive Deepgram infrastructure enhancements 2025-09-10 18:16:20 +09:00
package.json Consolidate duplicate configuration files 2025-09-10 19:24:48 +09:00
README.md Add comprehensive Deepgram infrastructure enhancements 2025-09-10 18:16:20 +09:00
requirment-origin.md Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
requirment.md Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
styles.css Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
tsconfig.json feat: Add comprehensive Deepgram settings UI 2025-08-30 21:03:23 +09:00
version-bump.mjs Initial commit: Obsidian Speech-to-Text Plugin 2025-08-25 20:00:43 +09:00
versions.json fix: TypeScript 타입 에러 41개 수정 및 타입 안전성 개선 2025-08-30 10:07:09 +09:00

Obsidian Speech-to-Text Plugin

Version License Obsidian OpenAI Deepgram

Convert audio recordings to text directly in Obsidian using multiple AI providers.

옵시디언에서 음성 파일을 텍스트로 변환하는 강력한 플러그인입니다.

English | 한국어


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

  1. Download the latest release from Releases
  2. Extract files to your vault's .obsidian/plugins/obsidian-speech-to-text/ folder
  3. Restart Obsidian
  4. 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

  1. Open Obsidian Settings → "Speech to Text"
  2. 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)

  1. Visit OpenAI Platform
  2. Sign in or create account
  3. Click "Create new secret key"
  4. Copy the key (⚠️ shown only once)

3. Get Deepgram API Key (for Deepgram)

  1. Visit Deepgram Console
  2. Sign up or sign in
  3. Go to "API Keys" menu
  4. Click "Create a New API Key"
  5. Copy the API key

4. Configure Plugin

  1. Open Obsidian Settings (Cmd/Ctrl + ,)
  2. Select "Speech to Text" from left menu
  3. Enter your API key(s):
    • "OpenAI API Key" (for Whisper)
    • "Deepgram API Key" (for Deepgram)
  4. Save settings

Usage (사용법)

Basic Usage

Method 1: Command Palette

  1. Open Command Palette: Cmd/Ctrl + P
  2. Search: "Transcribe audio file"
  3. Select File: Choose audio file from list
  4. Wait: Monitor progress in status bar
  5. Complete: Text automatically inserted into note

Method 2: Context Menu

  1. File Explorer: Find audio file
  2. Right Click: Right-click on audio file
  3. Select: "Transcribe audio file"
  4. Auto Process: Transcription starts and inserts result

Method 3: Hotkeys

  1. Settings: Settings → Hotkeys → search "Transcribe audio file"
  2. Set Hotkey: Assign preferred key combination
  3. Execute: Use hotkey for quick access

🎭 Using Speaker Diarization

Enable Speaker Diarization

  1. Open Settings: Settings → Speech to Text → Deepgram Settings
  2. Enable Diarization: Toggle "Speaker Diarization" to ON
  3. Select Nova-3: Choose "Nova-3" model (default for new installations)
  4. 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:

  1. Verify API key format (OpenAI: starts with sk-)
  2. Check API key status on provider dashboard
  3. Ensure sufficient credits/active subscription
  4. Remove any extra spaces from key

"File too large" Error

Solutions:

  1. Check file size limits (Whisper: 25MB, Deepgram: 2GB)
  2. Use Deepgram for larger files
  3. Compress audio files if needed

Speaker Diarization Not Working

Solutions:

  1. Ensure Nova-3 model is selected (required for diarization)
  2. Check "Speaker Diarization" is enabled in Deepgram settings
  3. Verify audio quality (clear speakers, minimal overlap)
  4. Use supported audio formats (M4A, MP3, WAV recommended)
  5. Check minimum speaker duration (2-3 seconds per segment)

No Audio Files Found

Solutions:

  1. Verify supported formats: .m4a, .mp3, .wav, .mp4, etc.
  2. Ensure files are in vault folder
  3. Restart Obsidian
  4. Wait for file indexing (large vaults)

Network Errors

Solutions:

  1. Check internet connection
  2. Verify VPN/proxy settings
  3. 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

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'feat: add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. 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?

Show Your Support

If this project helped you:

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

⬆ Back to top