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

  • Integrate voiceovers into Manim animations.

    • Utilize bookmarks to pause for key moments in the voiceover (identical to Manim Voiceover functionality).
  • Easily translate text within Manim animations to various languages with minimal code.

  • Leverage AI-driven services for text-to-speech, speech-to-text, and translation.

Services

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

* The OpenAI service can use any backend compatible with the OpenAI API through the base_url parameter, some of which are local (e.g., LocalAI).

** For now, the optional dependencies for the Whisper service cannot be installed automatically. To use the Whisper service, run pip install openai-whisper.

Notes on Chinese Translations

OpenAI Translator: Please specify Traditional (zh_tw) or Simplified (zh_cn) when using the OpenAI translator. Only specifying zh has no guarantee on the script used, although tests have indicated that GPT-4o strongly prefers Simplified Chinese in such cases.

DeepL Translator: The DeepL translator does not natively support translating to Traditional Chinese, so translating to Traditional Chinese requires the chinese optional dependency set to be installed. Only specifying zh has the same effect as specifying zh_cn.

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()) # Remove this line if you want to manually record voiceovers.
        self.set_stt_service(openai_service.OpenAISTTService()) # Only required if you use bookmarks.

        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

class MeaningOfLife(manim_speech.VoiceoverScene, manim_speech.TranslationScene):
    def construct(self) -> None:
        self.set_tts_service(openai_service.OpenAITTSService()) # Remove this line if you want to manually record voiceovers.
        self.set_stt_service(openai_service.OpenAISTTService()) # Only required if you use bookmarks.
        self.set_translation_service(openai_service.OpenAITranslationService()) # Remove this line if you want to manually translate text.

        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.2.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

manim_speech-0.2.1-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file manim_speech-0.2.1.tar.gz.

File metadata

  • Download URL: manim_speech-0.2.1.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for manim_speech-0.2.1.tar.gz
Algorithm Hash digest
SHA256 97365ec5d84676b9123b2c6810bd37a49ae6d0ec712e3a00c79400eef75e30b3
MD5 1406eca9233dd8c99e9ab9d9e7a0defc
BLAKE2b-256 42029d430edee9cd9775bdb69b42fe90f39f38b194b4c07576d04b8202db86bd

See more details on using hashes here.

File details

Details for the file manim_speech-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: manim_speech-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for manim_speech-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6bdf47b6cc6fe2f0c99e3c6a180f6c22166b2750bba7bb8f4323b9fc92451941
MD5 dd34fffc30dab5fd05058e220bb61bab
BLAKE2b-256 fab4c5198b6d5b2419f4718d283e4c6d7c779de028f1380529318f55568b841f

See more details on using hashes here.

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