Whisper-TikTok: turning an audio file into a captioned TikTok video with Whisper, Edge TTS and FFMPEG
From AI tools to TikTok video creation using FFMPEG, Microsoft Edge read aloud and OpenAI Whisper model
At a glance
- What is it?
- Whisper-TikTok is a Python CLI that transcribes audio with OpenAI Whisper, generates a voiceover through the Microsoft Edge read-aloud service, and renders a vertical video with FFMPEG. The pipeline is coherent, but it is a renderer, not an editor, and FFMPEG has to exist on your machine before anything works.
- Who is it for?
- Adopt Whisper-TikTok if you already have an audio file and want a captioned vertical video without opening an editor, and you are comfortable with Python 3.11 or 3.12 and a separate FFMPEG install. Skip it if you need frame-level creative control, a hosted service, or a pipeline that runs without FFMPEG present.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 70 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Whisper-TikTok actually produces, and for whom
The project takes an audio file and returns a finished vertical video: a transcription from OpenAI's Whisper model, a voiceover synthesized through the Microsoft Edge Cloud text-to-speech API, and a rendered MP4 assembled by FFMPEG. The README describes the intended output as a TikTok video with subtitles and a voiceover, and the repository ships a Streamlit dependency, so the same pipeline is reachable from a browser UI as well as from a terminal.
The audience is narrow and specific. It suits someone who has audio already (a podcast cut, a recording, a downloaded clip) and wants a captioned short without touching a video editor. It does not suit anyone who wants to author a video shot by shot. There is no timeline, no clip trimming, no keyframe control. The tool decides the composition; you supply the audio and a handful of style flags.
The three-stage pipeline: Whisper, Edge TTS, FFMPEG
Stage one is transcription. Whisper-TikTok depends on both openai-whisper and stable-ts, and the acknowledgments credit stable-ts with making the Whisper model usable "in a stable manner with font color and subtitle format options." That pairing matters: stable-ts is what produces word-level timing that survives the subtitle styling step, rather than a plain transcript that would drift against the audio.
Stage two is the voiceover. The edge-tts package (pinned to version 7.2.6 in pyproject.toml) talks to the Microsoft Edge read-aloud service. The README is explicit about why: the author considers that service more natural than the "often monotonous and artificial voiceovers prevalent in numerous TikTok videos." This is a cloud call, not a local model, so the voice quality depends on a service the project does not control.
Stage three is rendering. FFMPEG composites the background video, the subtitle track and the audio into the final file. The README states plainly that FFMPEG binaries "are not included in the repository and must be installed separately," and that they must be on your system PATH. Everything upstream can succeed and the render still fail if that binary is missing.
The dependency list also includes yt-dlp and tiktok-uploader, which is consistent with the README example that accepts a YouTube URL as a background video source.
Installing Whisper-TikTok and rendering a first video
The README states the project has been tested on Windows 10, Windows 11 and Ubuntu 24.04 with Python 3.11 and 3.12, and pyproject.toml enforces requires-python >=3.11. Clone the repository first:
git clone https://github.com/MatteoFasulo/Whisper-TikTok.gitThe README documents two dependency paths. The plain pip route uses requirements.txt, which is generated by uv and pins every transitive package with hashes:
pip install -r requirements.txtThe README says the project encourages uv instead, because the torch backend can be selected automatically for your hardware:
uv pip install -e . --torch-backend=autoFFMPEG is a separate install and is not vendored. The README lists the package-manager commands per platform; on Ubuntu or Debian it is:
sudo apt update && sudo apt install ffmpegOnce the console script is on your PATH, the README's entry point is the help command, which lists the available subcommands:
whisper_tiktok --helpThe create subcommand carries the styling flags, and the README points you at it for the full list:
whisper_tiktok create --helpA first real run can pick a named voice, which is the README's first usage example:
whisper_tiktok create --tts en-US-EricNeuralIf you would rather not choose a voice yourself, the README documents a random option that requires both a gender and a language, and notes that Whisper auto-detects the language of the audio and uses the corresponding model:
whisper_tiktok create --random_voice --gender Male --language en-USTo see what voices exist before picking one, the README provides a listing command that reports tone, style and suitable scenarios for each entry:
whisper_tiktok list-voicesWhere the tool stops being the right choice
The hard external dependency is FFMPEG. If you cannot install binaries on the machine (a locked-down container, a managed laptop without package-manager rights), the project cannot render anything, regardless of how well the Whisper and TTS stages behave. The README does not document a bundled or pure-Python fallback for the render step.
The second constraint is the cloud TTS call. Because the voiceover comes from the Edge read-aloud service through edge-tts, any network restriction, service change or rate limit affects output. The README does not document an offline voice path, and it does not describe retry or fallback behavior for that call.
The third is scope. Whisper-TikTok is a generator, not an editor. If your task is cutting a two-minute clip out of a longer recording, or matching captions to a specific on-screen moment, the CLI surface shown in the README (voice, subtitle format, subtitle position, font size, font color) is styling, not timing control. For that kind of work a general-purpose editor or a scripted FFMPEG pipeline you write yourself gives you the control this tool deliberately abstracts away.
How it differs from plain Whisper or a hand-written FFMPEG script
The obvious alternative is running openai-whisper directly and then assembling the video yourself. Whisper alone gives you a transcript and timestamps; it does not give you a voiceover, subtitle styling, or a vertical render. Whisper-TikTok's contribution is the glue: stable-ts for timing that holds up under styling, edge-tts for the voice, and FFMPEG for composition, all behind one command.
The second alternative is writing the FFMPEG invocation yourself. That is genuinely more flexible. You control the filter graph, the subtitle burn-in, the audio mixing and the encoding parameters. The trade-off is that you also maintain all of it, and you still have to solve transcription and text-to-speech separately. Whisper-TikTok's value proposition is that it collapses three tools into one CLI with a documented flag set, at the cost of the control you would have had over the render stage.
A third comparison worth noting is the Streamlit dependency. The project ships both a CLI and a browser interface over the same pipeline, which is unusual for a tool of this size and suggests the author wanted non-terminal users to reach it without a separate front end.
Licence, maintenance and the cost of upgrading
Whisper-TikTok is licensed under Apache-2.0, as stated in the README and in pyproject.toml. That is a permissive licence with an explicit patent grant, which is generally the easier end of the spectrum for commercial use, but the obligations (notice retention, stating changes) still apply and depend on how you redistribute. Nothing here is legal advice; read the LICENSE file in the repository.
The dependency surface is the real upgrade cost. edge-tts is pinned exactly (==7.2.6), while openai-whisper, stable-ts, torch, streamlit and others use lower bounds. An exact pin on the TTS client means voice behavior is stable but a fix upstream will not reach you without a version bump. The torch floor (>=2.6.0) is the heaviest install in the list, and the README's uv path exists specifically because picking the right torch backend by hand is error-prone.
The last push to the repository was on 2026-07-10, and the most recent release listed is v2.0.4 from 2026-01-25. The repository is not archived. The project ships a CHANGELOG.md, a pre-commit configuration and a pytest suite under tests/, so there is a maintenance structure in place, but the README does not document a deprecation or migration policy for breaking CLI changes.
Editorial conclusion
Adopt Whisper-TikTok if you already have an audio file and want a captioned vertical video without opening an editor, and you are comfortable with Python 3.11 or 3.12 and a separate FFMPEG install. Skip it if you need frame-level creative control, a hosted service, or a pipeline that runs without FFMPEG present. Before committing, run whisper_tiktok create --help on your own machine and confirm that the subtitle position, font and voice flags you need are actually exposed, and check that your torch install matches the backend uv picks for your hardware.
Frequently asked questions
What is the Whisper-TikTok voice?
It is not a single voice. Whisper-TikTok generates the voiceover through the Microsoft Edge Cloud text-to-speech API using the edge-tts package, and you select a voice with the --tts flag, for example en-US-EricNeural. The README also provides a list-voices command that shows each available voice with its tone, style and suitable scenarios.
How do I get the whispering voice on TikTok with Whisper-TikTok?
Run whisper_tiktok list-voices to see the available voices, then pass the one you want to whisper_tiktok create --tts. If you prefer not to choose, the README documents --random_voice, which requires both --gender and --language. The README does not describe a separate whisper-style voice category.
Is there a free text-to-speech tool for TikTok?
Whisper-TikTok is open source under Apache-2.0 and uses the Microsoft Edge Cloud TTS API through edge-tts for its voiceover, so there is no API key to buy. The README does not state any usage limits or costs for that service, and it does not document an offline voice option.
What is a whisper on TikTok?
In this project the term refers to the OpenAI Whisper speech recognition model, which Whisper-TikTok uses to transcribe the input audio before generating the voiceover and subtitles. The README does not describe a separate TikTok audio effect under that name.
How can you whisper with Whisper-TikTok?
You do not whisper into the tool; you give it an audio file and it produces the transcript and voiceover for you. The voice is chosen with --tts or with --random_voice plus --gender and --language, and the README's list-voices command shows what is available.
Community notes