Node-RED를 사용하여 브라우저에 말한 내용을 각 SNS에 알립니다.
14274 단어 WebSpeechAPInode-red
소개
하고 싶은 일
Node-RED 요약 기사
운영 환경
면책 조항
본편
화면
처리 흐름
흐름
각 SNS에 대한 액세스
실제로 구구하면 산정에서 와서 여기에 써도 곧 낡아지므로 각 API를 참조하십시오.
일단 지금 시점에서 어떤 일을 했는지는 남겨 둡니다.
보충
遅刻しますって LINE して
라고 모두 보내집니다. 브라우저 측 구현
이 근처를 참고로했습니다.
* 브라우저에서 음성 조작을 한다. (Speech Recognition API)
* 웹 페이지에서 브라우저의 음성 인식 기능 사용 - Web Speech API Speech Recognition
본가의 분과 거의 다르지 않기 때문에, 오리지날을 보는 것이 좋을까 생각합니다만, 일단 중요한 부분의 소스입니다
브라우저 html의 js
const startBtn = document.querySelector('#start-btn');
const resultDiv = document.querySelector('#speak-text');
SpeechRecognition = webkitSpeechRecognition || SpeechRecognition;
let recognition = new SpeechRecognition();
recognition.lang = 'ja-JP';
recognition.interimResults = true;
recognition.continuous = false;
let finalTranscript = '';
recognition.onresult = (event) => {
let interimTranscript = '';
for (let i = event.resultIndex; i < event.results.length; i++) {
let transcript = event.results[i][0].transcript;
if (event.results[i].isFinal) {
finalTranscript += transcript;
} else {
interimTranscript = transcript;
}
}
resultDiv.innerHTML = finalTranscript + '<i style="color:#ddd;">' + interimTranscript + '</i>';
}
// 文字列の送信
recognition.onend = (event) => {
recognition.stop();
const speakText = $("#speak-text").text()
sock.send(speakText);
}
// 開始ボタンのクリック
startBtn.onclick = () => {
speechSynthesis.cancel();
$('#status').text('please speak');
$("#speak-text").empty();
$("#response-text").empty();
finalTranscript = '';
recognition.start();
}
//Websocketの確立と各種イベント
var socketaddy = "wss://" + window.location.host + "/ws/speaker";
$(document).ready(function () {
sock = new WebSocket(socketaddy);
sock.onopen = function () {
$('#status').text('connected');
};
sock.onerror = function () {
$('#status').text('error');
};
sock.onclose = function () {
$('#status').text('closed please reload page!!')
}
sock.onmessage = function (evt) {
$('#status').text('response received');
$("#response-text").html(evt.data);
var speakText = $("#response-text").text();
// 発言を作成
const uttr = new SpeechSynthesisUtterance(speakText);
uttr.rate = 1.3;
uttr.lang = "ja-JP";
speechSynthesis.speak(uttr);
};
});
말하는 데이터를 일단 html로 하고 나서 꺼내고 있는 것은, br태그 등을 말할 수 없게 하기 위해서(웃음)
보기에는 2행으로 하고 싶지만, 태그를 말할 수 있으면 기분이 나쁘기 때문에. . .
Reference
이 문제에 관하여(Node-RED를 사용하여 브라우저에 말한 내용을 각 SNS에 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazutxt/items/19cd4bca52da73ffaf62텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)