Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MediaScript

MediaScript is an application that allows you to convert any media file, such as audio or video, into a subtitle file in the .srt format. The application uses OpenAI's Whisper model, combined with the whisper.cpp C++ library (which has been wrapped with a Go language binding), to perform speech recognition and generate the subtitle text.

The application provides a simple, user-friendly graphical user interface (GUI) built with the fyne.io toolkit, making it easy to use for both beginners and advanced users.

To use MediaScript, simply select the media file you want to convert using the file browser in the application's main window. The application will automatically start processing the file, generating a subtitle file in the .srt format.

Once the subtitle file is generated, you can save it to your local drive, and use it to display subtitles while playing the media file in any media player that supports the .srt subtitle format.

Overall, MediaScript provides an easy and convenient way to create subtitle files for any media file, without the need for manual transcription or editing.

Demo:

Screenshot

🤝 Contribute

We welcome contributions from everyone!
Whether it's bug fixes, new features, feedback, or documentation improvements — feel free to jump in and contribute.

How to Contribute

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes
  4. Submit a pull request

Feel free to open an issue as well.

If you have ideas, suggestions, or want to discuss anything related to the project, feel free to reach out:

  • Discord User ID: 1226149603993190483
  • Discord Username: ghaznix.com

Let’s build something amazing together! 🚀

Build

git clone --recursive https://github.com/GopherGhaznix/MediaScript.git
cd MediaScript/

Compile libwhisper.a (you can use make whisper in the bindings/go directory);

cd ./whisper.cpp/bindings/go/
make whisper
cd ../../..

You can download and run the other models as follows:

# ./models/download_model.sh [Model]
./models/download_model.sh base

Available models

ModelDiskMemSHA
tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

Link MediaScript against whisper by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the whisper.h file directory and libwhisper.a file directory respectively.

. ./export.sh

compile binary

go build .

TODOs:

  • Support export formats: SRT, VTT, ASS, TXT, JSON
  • Add speaker identification (speaker diarization)
  • Add subtitle translation to multiple languages
  • Generate word-level timestamps
  • Enable burn-in subtitles onto video with styling options (font, color, position)
  • Add summary generation

    Dubbing TODOs:

    • Text-to-speech dubbing in multiple languages
    • Multi-speaker voice assignment
    • Emotion-aware voice synthesis (tone/intensity)
    • Option to keep background music but replace speech
    • Export dubbed video in various formats

Supported Lanuage:

  • English
  • Arabic
  • Armenian
  • Azerbaijani
  • Basque
  • Belarusian
  • Bengali
  • Bulgarian
  • Catalan
  • Chinese
  • Croatian
  • Czech
  • Danish
  • Dutch
  • Estonian
  • Filipino
  • Finnish
  • French
  • Galician
  • Georgian
  • German
  • Greek
  • Gujarati
  • Hebrew
  • Hindi
  • Hungarian
  • Icelandic
  • Indonesian
  • Irish
  • Italian
  • Japanese
  • Kannada
  • Korean
  • Latin
  • Latvian
  • Lithuanian
  • Macedonian
  • Malay
  • Maltese
  • Norwegian
  • Persian
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Serbian
  • Slovak
  • Slovenian
  • Spanish
  • Swahili
  • Swedish
  • Tamil
  • Telugu
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese
  • Welsh
  • Yiddish

About

Transcribe Video or Audio into Subtitles

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages