webserverai
Version:
WebServerAI is an advanced project using AI to revolutionize web development. It empowers users to create visually stunning websites tailored to their needs without extensive coding knowledge. This innovative tool streamlines the design process, offering
67 lines (65 loc) • 2.99 kB
JavaScript
import Events from "./Events.js";
import { uniqid } from "./utils.js";
class VoiceType{
constructor(){
let e = new Events();
this.lang = e.request(window.location.origin+'/WebServerAI/data/languages.json?u='+uniqid(),true)['languages'][navigator.language];
}
#endRecording(elem){
elem.classList.add('wsa-mic-muted');
const icon = elem.querySelector('i');
icon.classList.remove('fa-microphone');
icon.classList.add('fa-microphone-slash');
}
/**
* Gets speeck to text
* @param {Object} options Settings for the speech recognition
*/
getTranscript(options={}){
if (!'SpeechRecognition' in window || !'webkitSpeechRecognition' in window) {
console.error(this.lang['dictionary'].console.voiceTypeSpeechNotEnabled);
return;
}
if(options.hasOwnProperty('toggleBtn')){
let x = document.querySelector(options.toggleBtn),
recognition = (new webkitSpeechRecognition() || new SpeechRecognition());
recognition.lang = (navigator.language||window.navigator.language);
recognition.interimResults = true;
recognition.continuous = true;
recognition.maxAlternatives = (options.hasOwnProperty('alternatives') ? options['alternatives'] : 1);
if(x){
x.addEventListener('click',()=>{
x.classList.toggle('wsa-mic-muted');
if(!x.classList.contains('wsa-mic-muted')){
const icon = x.querySelector('i');
icon.classList.remove('fa-microphone-slash');
icon.classList.add('fa-microphone');
recognition.start();
}else{
const icon = x.querySelector('i');
icon.classList.remove('fa-microphone');
icon.classList.add('fa-microphone-slash');
recognition.stop();
}
});
if(options.hasOwnProperty('error')){
recognition.addEventListener('error',options['error']);
recognition.addEventListener('error',()=>{this.#endRecording(x);});
}
if(options.hasOwnProperty('results')){
recognition.addEventListener('result',options['results']);
}else{
console.error(this.lang['dictionary'].console.voiceTypeResultsNotFound);
return;
}
}else{
console.error(this.lang['dictionary'].console.elementNotFound);
return;
}
}else{
console.error(this.lang['dictionary'].console.voiceTypeToggleNotFound);
return;
}
}
}
export default VoiceType;