Skip to main content

Manim plugin for adding speech to videos.

Project description

Manim Speech

Manim plugin for adding speech to videos.

Special thanks to osolmaz and others who worked on Manim Voiceover, which Manim Speech is heavily based on.

Installation

Manim Speech can be installed via pip using the following command:

pip install "manim_speech[*optional_dependency_sets*]"

Where *optional_dependency_sets* is a list of optional dependency sets for Manim Speech.

Features

  • Adding AI-generated voiceovers to Manim animations.
  • Translating text between languages.

Services

Service Name Optional Dependency Set Is Local Text-To-Speech Speech-To-Text Translation
OpenAI openai No Yes Yes No
ElevenLabs elevenlabs No Yes No No
Whisper whisper Yes No Yes No
AssemblyAI assemblyai No No Yes No
DeepL deepl No No No Yes

Note: Translating to Traditional Chinese (zh_tw) using the DeepL service requires the chinese optional dependency set to be installed.

Usage Examples

Creating a basic scene with a voiceover with Manim Speech:

import manim
import manim_speech
from manim_speech.services import openai as openai_service

class MeaningOfLife(manim_speech.VoiceoverScene):
    def construct(self) -> None:
        self.set_tts_service(openai_service.OpenAITTSService())
        self.set_stt_service(openai_service.OpenAISTTService())

        with self.voiceover("What is the meaning of life?") as speech_data:
            txt = manim.Text("The meaning of life is 42.")
            self.play(manim.Write(txt), run_time=speech_data.duration)
            self.wait_for_voiceover()
            self.play(manim.FadeOut(txt))

The same scene, but translated into Traditional Chinese:

import manim
import manim_speech
from manim_speech.services import openai as openai_service
from manim_speech.services import deepl as deepl_service

class MeaningOfLife(manim_speech.VoiceoverScene, manim_speech.TranslationScene):
    def construct(self) -> None:
        self.set_tts_service(openai_service.OpenAITTSService())
        self.set_stt_service(openai_service.OpenAISTTService())
        self.set_translation_service(deepl_service.DeepLTranslationService())

        self.translate(__file__, "meaning_of_life", "en", "zh_tw")
        _ = self._

        with self.voiceover(_("What is the meaning of life?")) as speech_data:
            txt = manim.Text(_("The meaning of life is 42."))
            self.play(manim.Write(txt), run_time=speech_data.duration)
            self.wait_for_voiceover()
            self.play(manim.FadeOut(txt))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manim_speech-0.1.0.tar.gz (10.4 kB view hashes)

Uploaded Source

Built Distribution

manim_speech-0.1.0-py3-none-any.whl (13.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page