voice_title-1.0.0/js/voice_title.js
js/voice_title.js
(function (Drupal) {
Drupal.behaviors.voiceTitleBehavior = {
attach: function (context, settings) {
if (context !== document) {
return;
}
if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) {
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({ audio: true })
.then(function (stream) {
initializeSpeechRecognition();
})
.catch(function (err) {
});
} else if (navigator.getUserMedia) {
navigator.getUserMedia({ audio: true }, function (stream) {
initializeSpeechRecognition();
}, function (err) {
});
} else {
}
function initializeSpeechRecognition() {
var recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false;
recognition.lang = 'en-US';
recognition.interimResults = false;
recognition.onresult = function (event) {
var transcript = event.results[0][0].transcript;
console.log('Recognized text:', transcript);
var titleField = document.querySelector('input[name="title[0][value]"]');
if (titleField) {
titleField.value = transcript;
console.log('Title field updated:', transcript);
} else {
}
};
recognition.onerror = function (event) {
console.error('Speech recognition error:', event.error);
};
var voiceTitleButton = document.getElementById('voice-title-btn');
if (voiceTitleButton) {
voiceTitleButton.addEventListener('click', function () {
recognition.start();
});
}
}
} else {
}
}
};
})(Drupal);
