
Security News
npm ‘is’ Package Hijacked in Expanding Supply Chain Attack
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
An audiobook sound effect generator that transforms SRT files into immersive audio experiences. It parses SRT files, uses ChatGPT to create sound effect prompts, generates sounds via the ElevenLabs API, and syncs the audio on an MP3 timeline.
This project is a sound effect generator for audiobooks, videos, and recordings based on SRT files. It parses SRT files, sends the elements to ChatGPT for sound effect prompts, merges the prompts with the SRT elements, generates sounds using the ElevenLabs API, and (optionally) places the audio on an MP3 timeline.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
ffmpeg
(optional, for adding sounds to the audio file)Install the package using pip:
pip install srt2soundfx
Here is an example of how to use the Srt2SoundFX class in your code:
from srt2soundfx.core import Srt2SoundFX
# Initialize the Srt2SoundFX class with your API keys
# Choose between Azure OpenAI and OpenAI by providing the respective API keys
srt2soundfx = Srt2SoundFX(
elevenlabs_api_key='ELEVENLABS_API_KEY',
openai_api_key='OPENAI_API_KEY', # Use this if you are using OpenAI
azure_openai_api_key='AZURE_OPENAI_API_KEY', # Use this if you are using Azure OpenAI
azure_openai_endpoint='AZURE_OPENAI_ENDPOINT' # Use this if you are using Azure OpenAI
)
# Define paths
srt_path = "/path/to/your/audio.srt"
save_dir = "/path/to/save/directory"
project_name = "your_project_name"
audio_path = "/path/to/your/audio.mp3"
# Process the audio
result = srt2soundfx.generate_sounds(srt_path, save_dir, project_name, audio_path)
# If you only want the sounds without placing them in the audio
sounds = srt2soundfx.generate_sounds(srt_path, save_dir, project_name)
The Srt2SoundFX project supports all languages that are supported by ChatGPT (e.g., English, Spanish, French, German, Polish, Italian, Portuguese, Chinese, Japanese, Korean, Russian, Hindi, and Arabic). This means you can process SRT files in any of these languages, and the sound effect prompts will be generated accordingly. Ensure that your SRT file is properly formatted and encoded in the language you intend to use.
Here is a complete example:
from srt2soundfx.core import Srt2SoundFX
# Initialize the Srt2SoundFX class
srt2soundfx = Srt2SoundFX(
elevenlabs_api_key='ELEVENLABS_API_KEY',
openai_api_key='OPENAI_API_KEY'
)
# Define paths
srt_path = "resources/audiobook.srt"
save_dir = "resources"
project_name = "audiobook"
audiobook_path = "resources/audiobook.mp3"
# Process the audio
result = srt2soundfx.generate_sounds(srt_path, save_dir, project_name, audiobook_path)
# If you only want the sounds without placing them in the audio
sounds = srt2soundfx.generate_sounds(srt_path, save_dir, project_name)
sounds
VariableWhen processing an SRT file, the result includes a list of sound effects with their details, such as the start and end times, the prompt used to generate the sound, and the path to the generated audio files:
[
{
"id": 10,
"start": 30.3,
"end": 33.0,
"text": "The silhouettes of ships loomed on the horizon.",
"prompt": "A high-quality sound of distant ships at sea, creating an atmosphere of adventure.",
"duration": 12,
"audio_path": "/resources/audiobook_10.mp3"
},
{
"id": 35,
"start": 116.5,
"end": 118.2,
"text": "We'll board them immediately.",
"prompt": "A high-quality sound of swords clashing, symbolizing a naval battle or abordage.",
"duration": 5,
"audio_path": "/resources/audiobook_35.mp3"
}
]
result
VariableIf you process an audio file along with the SRT file, the result variable contains paths to the final audio files:
{
"effects": "/app/resources/final_audiobook_with_effects.mp3",
"final_audio": "/app/resources/effects.mp3"
}
effects
: Path to the audiobook with the sound effects added.final_audio
: Path to the standalone audio effects timeline.Due to limitations of the ElevenLabs API, sound effects longer than 22 seconds were added manually, and some sound effects were deleted. Below are examples of audiobooks where this tool was used:
First, clone the repository:
git clone https://github.com/stefaner1/SRT2SoundFX.git
Then, navigate to the project folder:
$ cd SRT2SoundFX
Set Up Environment Variables
Copy the .env_example file and rename it to .env:
cp .env_example .env
Open the .env file and set your API keys. Save the file. These variables will be automatically loaded during development.
Next, run docker:
$ docker-compose up
Navigate to the tests directory:
$ cd tests
Then, run the tests:
$ python -m unittest discover
This project is licensed under the MIT License.
FAQs
An audiobook sound effect generator that transforms SRT files into immersive audio experiences. It parses SRT files, uses ChatGPT to create sound effect prompts, generates sounds via the ElevenLabs API, and syncs the audio on an MP3 timeline.
We found that srt2soundfx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
Security News
A critical flaw in the popular npm form-data package could allow HTTP parameter pollution, affecting millions of projects until patched versions are adopted.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.