To turn it on, press F2. When the chat is open, it will work by itself. Use the HTTPS protocol of the page. You can use 2 languages [ru, en] to switch, press F8.
当前为
// ==UserScript==
// @name Voice input for chat
// @namespace -
// @version 0.1
// @description To turn it on, press F2. When the chat is open, it will work by itself. Use the HTTPS protocol of the page. You can use 2 languages [ru, en] to switch, press F8.
// @author Nudo#9482
// @match *://sploop.io/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=sploop.io
// @run-at document-end
// @grant none
// ==/UserScript==
(function() {
const Chat = document.getElementById("chat")
const Keys = {}
const Recognizer = new window.webkitSpeechRecognition()
Chat.wrapper = document.getElementById("chat-wrapper")
Chat.voiceActive = false
Chat.voiceLang = "en-En"
Chat._voiceLangs = ["en-En", "ru-Ru"]
Chat.counter = 0
Chat.getNextLang = function() {
const length = Chat._voiceLangs.length - 1
this.counter += 1
if (this.counter > length) {
this.counter = 0
}
return this.counter
}
Recognizer.active = false
Recognizer.setup = function() {
this.interimResults = true
this.reset = function() {
this.stop()
setTimeout(() => {
this.start()
}, 750)
}
this.launch = function() {
this.lang = Chat.voiceLang
this.active = !this.active
this.start()
}
this.onresult = function() {
try {
if (!this.active) {
return void 0
}
const result = event.results[event.resultIndex]
const words = result[0].transcript
if (words.length) {
Chat.value = words
Chat.focus()
}
} catch {
this.disable()
}
}
this.disable = function() {
if (this.active) {
this.active = !Recognizer.active
this.stop()
}
}
this.onend = function() {
if (this.active) {
this.reset()
}
}
}
window.addEventListener("load", () => {
Recognizer.setup()
})
setInterval(() => {
try {
if (Chat.wrapper.style.display === "block") {
if (Chat.voiceActive) {
if (!Recognizer.active) {
Recognizer.launch()
}
} else {
Recognizer.disable()
}
} else {
Recognizer.disable()
}
} catch {
Recognizer.disable()
}
}, 100)
function onKeyDown(event) {
if (event.code === "F2") {
Chat.voiceActive = !Chat.voiceActive
}
if (event.code === "F8") {
Chat.voiceLang = Chat._voiceLangs[Chat.getNextLang()]
document.title = `Voice language: ${Chat.voiceLang}`
setTimeout(() => {
document.title = "Sploop.io - Fast paced combat game"
}, 2000)
}
}
document.addEventListener("keydown", onKeyDown)
})()