local sense=-20 | |
local speed = mp.get_property("speed") | |
local detect = false | |
function f(msg) | |
if string.find(msg.text, "silence_end") and detect then | |
mp.set_property("speed",speed) | |
endmsg=msg.text | |
detect = false | |
--print("end") | |
elseif string.find(msg.text, "silence_start") and detect==false then | |
speed = mp.get_property("speed") | |
mp.set_property("speed",5) | |
startmsg=msg.text | |
detect = true | |
--print("start") | |
end | |
end | |
function sensitivity(change) | |
sense = sense + change | |
mp.osd_message("detection sensitivity: "..sense.."dB") | |
if string.find(mp.get_property("af"), "silencedetect") then | |
mp.set_property("af", "lavfi=[silencedetect=n="..sense.."dB:d=1]") | |
end | |
end | |
function toggle() | |
mp.command("af toggle lavfi=[silencedetect=n="..sense.."dB:d=1]") | |
if string.find(mp.get_property("af"), "silencedetect") then | |
mp.osd_message("Silence detection enabled") | |
mp.register_event("log-message", f) | |
else | |
mp.set_property("speed",speed) | |
mp.osd_message("Silence detection disabled") | |
mp.unregister_event(f) | |
end | |
end | |
function det(msg) | |
if string.find(msg.text, "max_volume") then | |
mp.osd_message(msg.text) | |
end | |
end | |
local timer | |
function voldetect() | |
if timer~=nil and timer:is_enabled() then | |
timer:kill() | |
mp.unregister_event(det) | |
else | |
mp.register_event("log-message", det) | |
timer = mp.add_periodic_timer(0.1, function() | |
mp.command("no-osd af toggle lavfi=[volumedetect]") | |
mp.add_timeout(0.09, function() | |
mp.command("no-osd af toggle lavfi=[volumedetect]") | |
end) | |
end) | |
end | |
end | |
mp.enable_messages("v") | |
mp.add_key_binding("F2", "toggle", toggle) | |
mp.add_key_binding("alt+F2", "voldetect", voldetect) | |
mp.add_key_binding("shift+F2", "sense-up", function() sensitivity(1) end, "repeatable") | |
mp.add_key_binding("ctrl+F2", "sense-down", function() sensitivity(-1) end, "repeatable") |
I don't know if you are still around but this script leaves so much to desire. Such as timeouts between skips to avoid constantly cutting, custom buffers to re-wind/stop abit before the audio starts so you aren't skipped slightly into some detected sound/dialouge. I've tried to mess with this... but I'm just too terrible at making it do what I want. Please consider doing a touchup!
I don't know if you are still around but this script leaves so much to desire. Such as timeouts between skips to avoid constantly cutting, custom buffers to re-wind/stop abit before the audio starts so you aren't skipped slightly into some detected sound/dialouge. I've tried to mess with this... but I'm just too terrible at making it do what I want. Please consider doing a touchup!
Its been a while but I made a couple of modifications to the script and seems to work better. Be sure to regulate the sensitivity for an optimal experience. I changed the keybindings but that can be changed back if you don't like them.
local speed = mp.get_property("speed")
local detect = false
function f(msg)
if string.find(msg.text, "silence_end") and detect then
mp.set_property("speed",speed)
endmsg=msg.text
detect = false
--print("end")
elseif string.find(msg.text, "silence_start") and detect==false then
speed = mp.get_property("speed")
mp.set_property("speed",2)
mp.set_property("speed",2.5)
mp.set_property("speed",3)
mp.set_property("speed",2.5)
mp.set_property("speed",2)
startmsg=msg.text
detect = true
--print("start")
end
end
function sensitivity(change)
sense = sense + change
mp.osd_message("detection sensitivity: "..sense.."dB")
if string.find(mp.get_property("af"), "silencedetect") then
mp.set_property("af", "lavfi=[silencedetect=n="..sense.."dB:d=0.5]")
end
end
function toggle()
mp.command("af toggle lavfi=[silencedetect=n="..sense.."dB:d=0.5]")
if string.find(mp.get_property("af"), "silencedetect") then
mp.osd_message("Silence detection enabled")
mp.register_event("log-message", f)
else
mp.set_property("speed",speed)
mp.osd_message("Silence detection disabled")
mp.unregister_event(f)
end
end
function det(msg)
if string.find(msg.text, "max_volume") then
mp.osd_message(msg.text)
end
end
local timer
function voldetect()
if timer~=nil and timer:is_enabled() then
timer:kill()
mp.unregister_event(det)
else
mp.register_event("log-message", det)
timer = mp.add_periodic_timer(0.1, function()
mp.command("no-osd af toggle lavfi=[volumedetect]")
mp.add_timeout(0.09, function()
mp.command("no-osd af toggle lavfi=[volumedetect]")
end)
end)
end
end
mp.enable_messages("v")
mp.add_key_binding("F2", "toggle", toggle)
mp.add_key_binding("shift+F2", "voldetect", voldetect)
mp.add_key_binding("shift+F3", "sense-up", function() sensitivity(1) end, "repeatable")
mp.add_key_binding("shift+F4", "sense-down", function() sensitivity(-1) end, "repeatable")```
@Topping1 You need to use three ticks in order to show whitespace.
```
like
this
```
@Topping1 You need to use three ticks in order to show whitespace.
like
this
thanks!
omg I've been looking for something like this for so long, thanks!