NoSABR (Disable Youtube Auto-Dubbing)

Disable this annoying AI voice in youtube

< 腳本NoSABR (Disable Youtube Auto-Dubbing)的回應

評論:普通 - 腳本能使用,但有一些問題

§
發表於:2025-11-12

//AI-corrected version.

// ==UserScript==
// @name ❎/NoSABR (Отключить авто-дублирование Youtube) + Сохранять оригинальный язык
// @version 2025-08-29
// @description Отключите этот надоедливый голос ИИ на YouTube, сохранив оригинальный язык
// @author emlinhax (modified)
// @match https://www.youtube.com/*
// @grant none
// @license MIT
// @run-at document-start
// ==/UserScript==

(function() {
'use strict';

// Store original language
let originalLanguage = null;

// Override ytcfg.set to disable SABR and preserve language
window.ytcfg_set = ytcfg.set;
ytcfg.set = (x) => {
console.log("Disabling SABR Auto-dubbing and preserving original language...");

// Disable SABR
for(var c in x.WEB_PLAYER_CONTEXT_CONFIGS) {
x.WEB_PLAYER_CONTEXT_CONFIGS[c].serializedExperimentFlags = x.WEB_PLAYER_CONTEXT_CONFIGS[c].serializedExperimentFlags.replace(/html5_sabr(.*?)true/g, 'html5_sabr$1false');
console.log(x.WEB_PLAYER_CONTEXT_CONFIGS[c].serializedExperimentFlags);
}

// Store original language if available
if (x.HL && !originalLanguage) {
originalLanguage = x.HL;
console.log("Original language detected:", originalLanguage);
}

window.ytcfg_set(x);
};

// Function to ensure original language is maintained
function maintainOriginalLanguage() {
// Check if we have a stored original language
if (!originalLanguage) {
// Try to get it from URL or page content
const urlParams = new URLSearchParams(window.location.search);
originalLanguage = urlParams.get('hl') || navigator.language.split('-')[0];
}

// Force language preference if needed
if (originalLanguage && originalLanguage !== 'en') {
const player = document.querySelector('video');
if (player) {
// Monitor for audio track changes
const observer = new MutationObserver(() => {
const audioTracks = player.audioTracks;
if (audioTracks && audioTracks.length > 0) {
for (let i = 0; i < audioTracks.length; i++) {
// Try to select the track that matches our original language
if (audioTracks[i].language === originalLanguage ||
audioTracks[i].language.startsWith(originalLanguage)) {
audioTracks[i].enabled = true;
console.log("Set audio track to:", audioTracks[i].language);
break;
}
}
}
});

observer.observe(player, { attributes: true, childList: true, subtree: true });
}
}
}

// Run when page is ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', maintainOriginalLanguage);
} else {
maintainOriginalLanguage();
}

// Also run when navigating within YouTube (SPF)
let lastUrl = location.href;
new MutationObserver(() => {
const url = location.href;
if (url !== lastUrl) {
lastUrl = url;
setTimeout(maintainOriginalLanguage, 1000);
}
}).observe(document, { subtree: true, childList: true });
})();

發表回覆

登入以回覆