语音识别词替换
Speech recognition word replacement
我正在使用 speechRecognition,我想将一些口语替换为表情符号。
这是我的代码:
window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.interimResults = true;
recognition.lang = 'en-US';
let p = document.createElement('p');
const words = document.querySelector('.words');
words.appendChild(p);
recognition.addEventListener('result', e => {
const transcript = Array.from(e.results)
.map(result => result[0])
.map(result => result.transcript)
.join('');
const poopScript = transcript.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = poopScript;
const unicornScript = transcript.replace(/unicorn|eenhoorn/gi, '');
p.textContent = unicornScript;
if (e.results[0].isFinal) {
p = document.createElement('p');
words.appendChild(p);
}
});
recognition.addEventListener('end', recognition.start);
recognition.start();
当你说 'unicorn' 时,它会打印表情符号。但是当我说 poop 时,它只打印单词,而不是表情符号。如果我调转 const,它 运行 是 poopScript 而不是 unicornScript
const unicornScript = transcript.replace(/unicorn|eenhoorn/gi, '');
p.textContent = unicornScript;
const poopScript = transcript.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = poopScript;
我不知道为什么它不是 运行 我的第二个常量。
两个 replace
语句都在执行,但是您丢弃了第一个语句的结果。您需要根据第一个 replace
.
的结果对字符串调用第二个 replace
方法
var result = transcript.replace(/unicorn|eenhoorn/gi, '');
result = result.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = result;
或者您可以将调用链接在一起...
p.textContent = transcript
.replace(/unicorn|eenhoorn/gi, '')
.replace(/poop|poep|poo|shit|dump/gi, '')
;
我正在使用 speechRecognition,我想将一些口语替换为表情符号。
这是我的代码:
window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.interimResults = true;
recognition.lang = 'en-US';
let p = document.createElement('p');
const words = document.querySelector('.words');
words.appendChild(p);
recognition.addEventListener('result', e => {
const transcript = Array.from(e.results)
.map(result => result[0])
.map(result => result.transcript)
.join('');
const poopScript = transcript.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = poopScript;
const unicornScript = transcript.replace(/unicorn|eenhoorn/gi, '');
p.textContent = unicornScript;
if (e.results[0].isFinal) {
p = document.createElement('p');
words.appendChild(p);
}
});
recognition.addEventListener('end', recognition.start);
recognition.start();
当你说 'unicorn' 时,它会打印表情符号。但是当我说 poop 时,它只打印单词,而不是表情符号。如果我调转 const,它 运行 是 poopScript 而不是 unicornScript
const unicornScript = transcript.replace(/unicorn|eenhoorn/gi, '');
p.textContent = unicornScript;
const poopScript = transcript.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = poopScript;
我不知道为什么它不是 运行 我的第二个常量。
两个 replace
语句都在执行,但是您丢弃了第一个语句的结果。您需要根据第一个 replace
.
replace
方法
var result = transcript.replace(/unicorn|eenhoorn/gi, '');
result = result.replace(/poop|poep|poo|shit|dump/gi, '');
p.textContent = result;
或者您可以将调用链接在一起...
p.textContent = transcript
.replace(/unicorn|eenhoorn/gi, '')
.replace(/poop|poep|poo|shit|dump/gi, '')
;