# ElevenLabs Force Alignment SRT Generator
π¬ A powerful Python tool for generating synchronized SRT subtitles using ElevenLabs Force Alignment API with optional AI-powered semantic segmentation.
## β¨ Features
- **High-Precision Alignment**: Uses ElevenLabs Force Alignment API for accurate word-level timing
- **AI Semantic Segmentation**: Leverages Google Gemini for intelligent subtitle breaking
- **Bilingual Support**: Automatically generates bilingual subtitles (original + translation)
- **Multi-Language**: Supports 99+ languages including Chinese, English, Japanese, Korean, etc.
- **Smart Formatting**: Removes punctuation and optimizes line breaks for readability
- **Flexible Output**: Configurable character limits and segmentation strategies
## π Quick Start
### Prerequisites
- Python 3.7+
- ElevenLabs API key ([Get one here](https://elevenlabs.io/))
- Google Gemini API key ([Get one here](https://makersuite.google.com/app/apikey)) - Optional for semantic segmentation
### Installation
#### Option 1: Install from PyPI (Recommended)
```bash
pip install elevenlabs-srt-generator
```
#### Option 2: Install from Source
```bash
git clone https://github.com/preangelleo/script-force-alignment.git
cd script-force-alignment
pip install -r requirements.txt
```
## π Usage
### Method 1: Using the SRTGenerator Class (Recommended)
The new class-based approach allows you to pass API keys directly without managing environment files:
```python
from script_force_alignment import SRTGenerator
# Initialize the generator with API keys
generator = SRTGenerator(
elevenlabs_api_key="your_elevenlabs_key",
gemini_api_key="your_gemini_key" # Optional for semantic segmentation
)
# Generate subtitles
success, result = generator.generate(
audio_file="path/to/audio.mp3",
text="Your transcript text here",
output_file="output/subtitles.srt",
max_chars_per_line=20,
language='chinese',
use_semantic_segmentation=True,
model='gemini-2.0-flash' # Optional: specify Gemini model
)
if success:
print(f"Subtitles saved to: {result}")
```
### Method 2: Command Line Interface
After installing from PyPI, you can use the CLI directly:
```bash
# Basic usage
elevenlabs-srt audio.mp3 "Your transcript text" -o output.srt
# With options
elevenlabs-srt audio.mp3 transcript.txt \
--output subtitles.srt \
--max-chars 30 \
--language chinese \
--no-semantic # Disable AI segmentation
--system-prompt custom_prompt.txt # Use custom system prompt
```
### Method 3: Legacy Function Interface
For backward compatibility, you can still use the original function with environment variables:
```python
# Requires ELEVENLABS_API_KEY and GEMINI_API_KEY in .env file
from script_force_alignment import elevenlabs_force_alignment_to_srt
success, result = elevenlabs_force_alignment_to_srt(
audio_file="path/to/audio.mp3",
input_text="Your transcript text here",
output_filepath="output/subtitles.srt"
)
```
### Using the Example Script
Edit `example_usage.py` with your API keys and parameters:
```python
# API Keys (required)
ELEVENLABS_API_KEY = "your_elevenlabs_api_key_here"
GEMINI_API_KEY = "your_gemini_api_key_here" # Optional
# Audio and text configuration
AUDIO_FILE = "./samples/your_audio.mp3"
TEXT_CONTENT = "Your transcript here..."
OUTPUT_FILE = "./output/subtitles.srt"
```
Then run:
```bash
python example_usage.py
```
### Running Tests
The test script allows you to compare semantic vs simple segmentation:
```bash
python test.py
```
## π¨ Custom System Prompt
The tool uses an AI system prompt to guide subtitle generation. You can customize this in three ways:
### 1. Modify the Default Prompt File
Edit `system_prompt.txt` to change the default behavior globally.
### 2. Pass Custom Prompt to SRTGenerator
```python
# Load custom prompt from file
with open('my_custom_prompt.txt', 'r') as f:
custom_prompt = f.read()
generator = SRTGenerator(
elevenlabs_api_key="key",
gemini_api_key="key",
system_prompt=custom_prompt # Use custom prompt
)
```
### 3. Override Per Generation Call
```python
generator.generate(
audio_file="audio.mp3",
text="transcript",
output_file="output.srt",
system_prompt="Your custom prompt with {max_chars_per_line} and {words_json}"
)
```
### System Prompt Placeholders
Your custom prompt must include these placeholders:
- `{max_chars_per_line}` - Will be replaced with the character limit
- `{words_json}` - Will be replaced with the word timing data
## π§ API Configuration
### Option 1: Pass API Keys Directly (Recommended)
```python
generator = SRTGenerator(
elevenlabs_api_key="your_key",
gemini_api_key="your_key"
)
```
### Option 2: Use Environment Variables
Create a `.env` file with:
```env
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
GEMINI_API_KEY=your_gemini_api_key_here
```
### Getting API Keys
1. **ElevenLabs API Key**:
- Sign up at [ElevenLabs](https://elevenlabs.io/)
- Go to your profile settings
- Copy your API key
- **Important**: Enable the Force Alignment feature in your API settings (it's disabled by default)
2. **Google Gemini API Key**:
- Visit [Google AI Studio](https://makersuite.google.com/app/apikey)
- Create a new API key
- Enable the Gemini API
## π API Reference
### SRTGenerator Class
```python
class SRTGenerator:
def __init__(
elevenlabs_api_key: str,
gemini_api_key: Optional[str] = None,
default_model: str = 'gemini-2.0-flash',
system_prompt: Optional[str] = None
)
```
#### Constructor Parameters
- **elevenlabs_api_key**: ElevenLabs API key (required)
- **gemini_api_key**: Gemini API key (optional, needed for semantic segmentation)
- **default_model**: Default Gemini model to use
- **system_prompt**: Custom system prompt for AI segmentation
#### Generate Method
```python
def generate(
audio_file: str,
text: str,
output_file: str,
max_chars_per_line: int = 20,
language: str = 'chinese',
use_semantic_segmentation: bool = True,
model: Optional[str] = None,
system_prompt: Optional[str] = None
) -> Tuple[bool, str]
```
### Legacy Function
```python
elevenlabs_force_alignment_to_srt(
audio_file: str,
input_text: str,
output_filepath: str,
api_key: str = None,
max_chars_per_line: int = 20,
language: str = 'chinese',
use_semantic_segmentation: bool = True,
model: str = None,
system_prompt: str = None
) -> Tuple[bool, str]
```
### Parameters
- **audio_file**: Path to audio file (MP3, WAV, M4A, OGG, FLAC, etc.)
- **input_text**: Exact transcript of the audio content
- **output_filepath**: Where to save the SRT file
- **api_key**: Optional ElevenLabs API key (overrides .env)
- **max_chars_per_line**: Maximum characters per subtitle line
- **language**: Language of the content (e.g., 'chinese', 'english')
- **use_semantic_segmentation**: Enable AI-powered semantic breaking
- **model**: Gemini model to use (default: 'gemini-2.0-flash'). Options:
- `'gemini-2.0-flash'`: Fast and efficient (default)
- `'gemini-2.0-flash-exp'`: Experimental features
- `'gemini-1.5-pro'`: Higher quality output
- `'gemini-2.0-flash-thinking'`: Complex reasoning
### Returns
- **Tuple[bool, str]**: (Success status, Output path or error message)
## π― Features Comparison
| Feature | Semantic Segmentation | Simple Segmentation |
|---------|----------------------|-------------------|
| Natural breaks | β
Yes | β No |
| Bilingual support | β
Yes | β No |
| AI-powered | β
Yes | β No |
| Processing time | ~3-5s | ~1-2s |
| Quality | High | Basic |
## π Supported Languages
The tool supports 99+ languages including:
- Chinese (Simplified & Traditional)
- English
- Japanese
- Korean
- Spanish
- French
- German
- Russian
- Arabic
- Hindi
- And many more...
## π Output Format
The tool generates standard SRT format:
```srt
1
00:00:00,123 --> 00:00:02,456
θΏζ―第δΈθ‘εεΉ
This is the first subtitle
2
00:00:02,456 --> 00:00:05,789
θΏζ―第δΊθ‘εεΉ
This is the second subtitle
```
## π Troubleshooting
### Common Issues
1. **API Key Errors**:
- Ensure your API keys are valid
- Check that .env file is in the correct location
- Verify keys don't have extra spaces
2. **Audio File Issues**:
- Maximum file size: 1GB
- Supported formats: MP3, WAV, M4A, OGG, FLAC, AAC, OPUS, MP4
- Ensure file path is correct
3. **Text Alignment Issues**:
- Text must match audio content exactly
- Remove extra spaces or formatting
- Check language setting matches audio
### Debug Mode
Enable detailed logging by setting environment variable:
```bash
export DEBUG=true
python example_usage.py
```
## π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## π License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## π Acknowledgments
- [ElevenLabs](https://elevenlabs.io/) for the Force Alignment API
- [Google Gemini](https://deepmind.google/technologies/gemini/) for AI semantic analysis
- Community contributors
## π§ Support
For issues, questions, or suggestions:
- Open an issue on GitHub
- Contact: your-email@example.com
## π¦ Project Status




---
Made with β€οΈ for the subtitle generation community
Raw data
{
"_id": null,
"home_page": "https://github.com/preangelleo/script-force-alignment",
"name": "elevenlabs-srt-generator",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "subtitles, srt, elevenlabs, force-alignment, speech-to-text, transcription, ai, gemini, bilingual",
"author": "Script Force Alignment Contributors",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/bf/da/b0a4658032873ef5a9dc60191a8ba4a72d9f9e63775b0880145a0b0097ae/elevenlabs_srt_generator-1.2.0.tar.gz",
"platform": null,
"description": "# ElevenLabs Force Alignment SRT Generator\n\n\ud83c\udfac A powerful Python tool for generating synchronized SRT subtitles using ElevenLabs Force Alignment API with optional AI-powered semantic segmentation.\n\n## \u2728 Features\n\n- **High-Precision Alignment**: Uses ElevenLabs Force Alignment API for accurate word-level timing\n- **AI Semantic Segmentation**: Leverages Google Gemini for intelligent subtitle breaking\n- **Bilingual Support**: Automatically generates bilingual subtitles (original + translation)\n- **Multi-Language**: Supports 99+ languages including Chinese, English, Japanese, Korean, etc.\n- **Smart Formatting**: Removes punctuation and optimizes line breaks for readability\n- **Flexible Output**: Configurable character limits and segmentation strategies\n\n## \ud83d\ude80 Quick Start\n\n### Prerequisites\n\n- Python 3.7+\n- ElevenLabs API key ([Get one here](https://elevenlabs.io/))\n- Google Gemini API key ([Get one here](https://makersuite.google.com/app/apikey)) - Optional for semantic segmentation\n\n### Installation\n\n#### Option 1: Install from PyPI (Recommended)\n```bash\npip install elevenlabs-srt-generator\n```\n\n#### Option 2: Install from Source\n```bash\ngit clone https://github.com/preangelleo/script-force-alignment.git\ncd script-force-alignment\npip install -r requirements.txt\n```\n\n## \ud83d\udcd6 Usage\n\n### Method 1: Using the SRTGenerator Class (Recommended)\n\nThe new class-based approach allows you to pass API keys directly without managing environment files:\n\n```python\nfrom script_force_alignment import SRTGenerator\n\n# Initialize the generator with API keys\ngenerator = SRTGenerator(\n elevenlabs_api_key=\"your_elevenlabs_key\",\n gemini_api_key=\"your_gemini_key\" # Optional for semantic segmentation\n)\n\n# Generate subtitles\nsuccess, result = generator.generate(\n audio_file=\"path/to/audio.mp3\",\n text=\"Your transcript text here\",\n output_file=\"output/subtitles.srt\",\n max_chars_per_line=20,\n language='chinese',\n use_semantic_segmentation=True,\n model='gemini-2.0-flash' # Optional: specify Gemini model\n)\n\nif success:\n print(f\"Subtitles saved to: {result}\")\n```\n\n### Method 2: Command Line Interface\n\nAfter installing from PyPI, you can use the CLI directly:\n\n```bash\n# Basic usage\nelevenlabs-srt audio.mp3 \"Your transcript text\" -o output.srt\n\n# With options\nelevenlabs-srt audio.mp3 transcript.txt \\\n --output subtitles.srt \\\n --max-chars 30 \\\n --language chinese \\\n --no-semantic # Disable AI segmentation\n --system-prompt custom_prompt.txt # Use custom system prompt\n```\n\n### Method 3: Legacy Function Interface\n\nFor backward compatibility, you can still use the original function with environment variables:\n\n```python\n# Requires ELEVENLABS_API_KEY and GEMINI_API_KEY in .env file\nfrom script_force_alignment import elevenlabs_force_alignment_to_srt\n\nsuccess, result = elevenlabs_force_alignment_to_srt(\n audio_file=\"path/to/audio.mp3\",\n input_text=\"Your transcript text here\",\n output_filepath=\"output/subtitles.srt\"\n)\n```\n\n### Using the Example Script\n\nEdit `example_usage.py` with your API keys and parameters:\n\n```python\n# API Keys (required)\nELEVENLABS_API_KEY = \"your_elevenlabs_api_key_here\"\nGEMINI_API_KEY = \"your_gemini_api_key_here\" # Optional\n\n# Audio and text configuration\nAUDIO_FILE = \"./samples/your_audio.mp3\"\nTEXT_CONTENT = \"Your transcript here...\"\nOUTPUT_FILE = \"./output/subtitles.srt\"\n```\n\nThen run:\n```bash\npython example_usage.py\n```\n\n### Running Tests\n\nThe test script allows you to compare semantic vs simple segmentation:\n\n```bash\npython test.py\n```\n\n## \ud83c\udfa8 Custom System Prompt\n\nThe tool uses an AI system prompt to guide subtitle generation. You can customize this in three ways:\n\n### 1. Modify the Default Prompt File\nEdit `system_prompt.txt` to change the default behavior globally.\n\n### 2. Pass Custom Prompt to SRTGenerator\n```python\n# Load custom prompt from file\nwith open('my_custom_prompt.txt', 'r') as f:\n custom_prompt = f.read()\n\ngenerator = SRTGenerator(\n elevenlabs_api_key=\"key\",\n gemini_api_key=\"key\",\n system_prompt=custom_prompt # Use custom prompt\n)\n```\n\n### 3. Override Per Generation Call\n```python\ngenerator.generate(\n audio_file=\"audio.mp3\",\n text=\"transcript\",\n output_file=\"output.srt\",\n system_prompt=\"Your custom prompt with {max_chars_per_line} and {words_json}\"\n)\n```\n\n### System Prompt Placeholders\nYour custom prompt must include these placeholders:\n- `{max_chars_per_line}` - Will be replaced with the character limit\n- `{words_json}` - Will be replaced with the word timing data\n\n## \ud83d\udd27 API Configuration\n\n### Option 1: Pass API Keys Directly (Recommended)\n```python\ngenerator = SRTGenerator(\n elevenlabs_api_key=\"your_key\",\n gemini_api_key=\"your_key\"\n)\n```\n\n### Option 2: Use Environment Variables\nCreate a `.env` file with:\n```env\nELEVENLABS_API_KEY=your_elevenlabs_api_key_here\nGEMINI_API_KEY=your_gemini_api_key_here\n```\n\n### Getting API Keys\n\n1. **ElevenLabs API Key**:\n - Sign up at [ElevenLabs](https://elevenlabs.io/)\n - Go to your profile settings\n - Copy your API key\n - **Important**: Enable the Force Alignment feature in your API settings (it's disabled by default)\n\n2. **Google Gemini API Key**:\n - Visit [Google AI Studio](https://makersuite.google.com/app/apikey)\n - Create a new API key\n - Enable the Gemini API\n\n## \ud83d\udcdd API Reference\n\n### SRTGenerator Class\n\n```python\nclass SRTGenerator:\n def __init__(\n elevenlabs_api_key: str,\n gemini_api_key: Optional[str] = None,\n default_model: str = 'gemini-2.0-flash',\n system_prompt: Optional[str] = None\n )\n```\n\n#### Constructor Parameters\n- **elevenlabs_api_key**: ElevenLabs API key (required)\n- **gemini_api_key**: Gemini API key (optional, needed for semantic segmentation)\n- **default_model**: Default Gemini model to use\n- **system_prompt**: Custom system prompt for AI segmentation\n\n#### Generate Method\n\n```python\ndef generate(\n audio_file: str,\n text: str,\n output_file: str,\n max_chars_per_line: int = 20,\n language: str = 'chinese',\n use_semantic_segmentation: bool = True,\n model: Optional[str] = None,\n system_prompt: Optional[str] = None\n) -> Tuple[bool, str]\n```\n\n### Legacy Function\n\n```python\nelevenlabs_force_alignment_to_srt(\n audio_file: str,\n input_text: str,\n output_filepath: str,\n api_key: str = None,\n max_chars_per_line: int = 20,\n language: str = 'chinese',\n use_semantic_segmentation: bool = True,\n model: str = None,\n system_prompt: str = None\n) -> Tuple[bool, str]\n```\n\n### Parameters\n\n- **audio_file**: Path to audio file (MP3, WAV, M4A, OGG, FLAC, etc.)\n- **input_text**: Exact transcript of the audio content\n- **output_filepath**: Where to save the SRT file\n- **api_key**: Optional ElevenLabs API key (overrides .env)\n- **max_chars_per_line**: Maximum characters per subtitle line\n- **language**: Language of the content (e.g., 'chinese', 'english')\n- **use_semantic_segmentation**: Enable AI-powered semantic breaking\n- **model**: Gemini model to use (default: 'gemini-2.0-flash'). Options:\n - `'gemini-2.0-flash'`: Fast and efficient (default)\n - `'gemini-2.0-flash-exp'`: Experimental features\n - `'gemini-1.5-pro'`: Higher quality output\n - `'gemini-2.0-flash-thinking'`: Complex reasoning\n\n### Returns\n\n- **Tuple[bool, str]**: (Success status, Output path or error message)\n\n## \ud83c\udfaf Features Comparison\n\n| Feature | Semantic Segmentation | Simple Segmentation |\n|---------|----------------------|-------------------|\n| Natural breaks | \u2705 Yes | \u274c No |\n| Bilingual support | \u2705 Yes | \u274c No |\n| AI-powered | \u2705 Yes | \u274c No |\n| Processing time | ~3-5s | ~1-2s |\n| Quality | High | Basic |\n\n## \ud83c\udf0d Supported Languages\n\nThe tool supports 99+ languages including:\n- Chinese (Simplified & Traditional)\n- English\n- Japanese\n- Korean\n- Spanish\n- French\n- German\n- Russian\n- Arabic\n- Hindi\n- And many more...\n\n## \ud83d\udcca Output Format\n\nThe tool generates standard SRT format:\n\n```srt\n1\n00:00:00,123 --> 00:00:02,456\n\u8fd9\u662f\u7b2c\u4e00\u884c\u5b57\u5e55\nThis is the first subtitle\n\n2\n00:00:02,456 --> 00:00:05,789\n\u8fd9\u662f\u7b2c\u4e8c\u884c\u5b57\u5e55\nThis is the second subtitle\n```\n\n## \ud83d\udd0d Troubleshooting\n\n### Common Issues\n\n1. **API Key Errors**:\n - Ensure your API keys are valid\n - Check that .env file is in the correct location\n - Verify keys don't have extra spaces\n\n2. **Audio File Issues**:\n - Maximum file size: 1GB\n - Supported formats: MP3, WAV, M4A, OGG, FLAC, AAC, OPUS, MP4\n - Ensure file path is correct\n\n3. **Text Alignment Issues**:\n - Text must match audio content exactly\n - Remove extra spaces or formatting\n - Check language setting matches audio\n\n### Debug Mode\n\nEnable detailed logging by setting environment variable:\n```bash\nexport DEBUG=true\npython example_usage.py\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- [ElevenLabs](https://elevenlabs.io/) for the Force Alignment API\n- [Google Gemini](https://deepmind.google/technologies/gemini/) for AI semantic analysis\n- Community contributors\n\n## \ud83d\udce7 Support\n\nFor issues, questions, or suggestions:\n- Open an issue on GitHub\n- Contact: your-email@example.com\n\n## \ud83d\udea6 Project Status\n\n\n\n\n\n\n---\n\nMade with \u2764\ufe0f for the subtitle generation community\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Generate synchronized SRT subtitles using ElevenLabs Force Alignment API with AI-powered semantic segmentation",
"version": "1.2.0",
"project_urls": {
"Documentation": "https://github.com/preangelleo/script-force-alignment#readme",
"Homepage": "https://github.com/preangelleo/script-force-alignment",
"Issues": "https://github.com/preangelleo/script-force-alignment/issues",
"Repository": "https://github.com/preangelleo/script-force-alignment"
},
"split_keywords": [
"subtitles",
" srt",
" elevenlabs",
" force-alignment",
" speech-to-text",
" transcription",
" ai",
" gemini",
" bilingual"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3d98bbb2447c1a0e583c486718c945c8ab44897bf50a8d250895eb1c4867ca44",
"md5": "18175e1ab7f43714c365796f7ed19ff4",
"sha256": "a33d69b74640e90fe1b384512b3a7281d4234192257c490eb1e97363851df3d0"
},
"downloads": -1,
"filename": "elevenlabs_srt_generator-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "18175e1ab7f43714c365796f7ed19ff4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 15186,
"upload_time": "2025-08-13T02:39:04",
"upload_time_iso_8601": "2025-08-13T02:39:04.080225Z",
"url": "https://files.pythonhosted.org/packages/3d/98/bbb2447c1a0e583c486718c945c8ab44897bf50a8d250895eb1c4867ca44/elevenlabs_srt_generator-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bfdab0a4658032873ef5a9dc60191a8ba4a72d9f9e63775b0880145a0b0097ae",
"md5": "51cd47553c82b288853c8a53432298df",
"sha256": "e7ddb2c9ac061a29d6dcf39e647f0b1c075a0ca5b38041fb711fa736c95afea1"
},
"downloads": -1,
"filename": "elevenlabs_srt_generator-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "51cd47553c82b288853c8a53432298df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 21487,
"upload_time": "2025-08-13T02:39:05",
"upload_time_iso_8601": "2025-08-13T02:39:05.435714Z",
"url": "https://files.pythonhosted.org/packages/bf/da/b0a4658032873ef5a9dc60191a8ba4a72d9f9e63775b0880145a0b0097ae/elevenlabs_srt_generator-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 02:39:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "preangelleo",
"github_project": "script-force-alignment",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "requests",
"specs": [
[
">=",
"2.31.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "google-generativeai",
"specs": [
[
">=",
"0.8.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"7.4.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"4.1.0"
]
]
},
{
"name": "black",
"specs": [
[
">=",
"23.0.0"
]
]
},
{
"name": "flake8",
"specs": [
[
">=",
"6.0.0"
]
]
}
],
"lcname": "elevenlabs-srt-generator"
}