html
1 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h1>○○○○○</h1> 6</header> 7 <div> 8 <button id="start-btn">start</button> 9 <button id="stop-btn">stop</button> 10 <div id="result-div"></div> 11 </div> 12 13 <script> 14 const startBtn = document.querySelector('#start-btn'); 15 const stopBtn = document.querySelector('#stop-btn'); 16 const resultDiv = document.querySelector('#result-div'); 17 18 SpeechRecognition = webkitSpeechRecognition || 19 SpeechRecognition; 20 let recognition = new SpeechRecognition(); 21 22 recognition.lang = 'ja-JP'; 23 recognition.interimResults = true; 24 recognition.continuous = true; 25 26 let finalTranscript = ''; 27 28 recognition.onresult = (event) => { 29 let interimTranscript = ' '; 30 for (let i = event.resultIndex; i < event.results.length; i++) { 31 let transcript = event.results[i][0].transcript; 32 if (event.results[i].isFinal) { 33 finalTranscript += transcript; 34 } else { 35 interimTranscript = transcript; 36 } 37 } 38 resultDiv.innerHTML = finalTranscript + '<i style="color:#808080;">' + interimTranscript + '</i>'; 39 } 40 41 startBtn.onclick = () => { 42 recognition.start(); 43 } 44 stopBtn.onclick = () => { 45 recognition.stop(); 46 } 47 </script> 48</body> 49 </html> 50
css
1 2* { 3 box-sizing: border-box; 4} 5body { 6 margin: 0; 7 padding: 0; 8 font-family: "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", メイリオ, Meiryo, "MS Pゴシック", "Helvetica Neue", Helvetica, Arial, sans-serif; 9 background-color: #CDEAFA; 10} 11header { 12 padding: 10px; 13 position: fixed; 14 top: 0; 15 width: 100%; 16 background-color: #73CDF7; 17 display: flex; 18 align-items: center; 19 text-align: center; 20 position:fixed; 21} 22h1 { 23 text-decoration: none; 24 color: #142e37; 25 margin: auto; 26 padding: 0; 27text-align: center; 28 font-size: 30px; 29font-family: cursive; 30 width: 100%; 31} 32div{ 33text-align: center; 34margin-right: 50px; 35} 36button{ 37margin-left: 20px; 38margin-top: 100px; 39zoom: 1.8; 40} 41#result-div{ 42margin-top: 25px; 43zoom: 1.8; 44} 45
音声認識で特定のキーワードを話すと画像が表示されるようにしたいです。プログラミングはまだ不慣れなので色々と調べながら進めているのですが、画像が表示できませんでした。どうしたらいいか教えていただきたいです!
こちらはWebサーバー上で動くものにしたいです。
また、キーワードに含まれていないものは画像を表示せず、会話を自動テキスト化するだけにしたいです。現在すでにテキスト化することの方はできています。
このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
markdownを使ってソースコードを書いてください。
https://teratail.com/help/question-tips#:~:text=teratail%E3%81%A6%E3%82%99%E3%81%AF%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%88%E3%82%99%E3%82%92%E3%82%B7%E3%83%B3%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B9%E3%83%8F%E3%82%A4%E3%83%A9%E3%82%A4%E3%83%88%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8B%E3%82%99%E3%81%A6%E3%82%99%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82
https://teratail-v2.storage.googleapis.com/assets/img/tour/01.webm?1594714893253494
https://teratail.com/questions/238564
現状のコードでどこまでできていて何がわからないのでしょうか
「うまくいかない」では何も伝わらないので、起きている現象を具体的に記載してください
「画像」とはご提示のコードで言うと、どれのことですか?
#result-div ですか?
はい、現在result-divに音声認識で話した内容が文字で出るようになっているので、ここに話している中で特定のキーワードを認識することによって画像が表示されるようにしたいです。
(例えば、公園に行きたいと言うと→公園の画像が表示)
それは仕様になるので、法則決めてください。
AIレベル目指すならDBとかなりの数の教師データ必要になりそうですが。
簡単なサンプルとして作成できればいいので、AIレベルなど高度なものでなくて大丈夫です。 finalTranscriptにimgを加えれば可能だというのを見つけたのですが、その場合はどのようにimgを挿入すればいいのでしょうか?もしわかれば教えていただきたいです。
あとは、表示させたい画像はどこにあるのか準備するのかとか、もっと仕様詰めて設計する必要があると思います。
表示させたい画像はファイルに保存してあるものを使います。
問題を把握しました。
ご回答いただきありがとうございます。
載せていただいたコードは
if(event.results[i].isFinal){ の後ろに入れればいいのでしょうか?
回答へのコメントは回答のコメント欄にしていただくのが望ましいです。
resultDiv.innerHTML = finalTranscript + '<i style="color:#808080;">' + interimTranscript + '</i>';
を差し替える感じですね。
>ファイルに保存
細かいことかもしれませんが大事なので。画像自体が「ファイル」です。
「どこ」というと大抵は「置かれている具体的な場所」をさします。
WebサービスはWebサーバー上で動くのでそのサーバー内か、もしくは画像検索APIなどで他所様のものを参照するとか(基本直リンクはやらないほうが良いですが、「音声のなかのキーワードにない画像はどうするの」という点が不明でした)
ひとまず現状の質問内容ではそのあたりの要件や想い、現状の問題点が不明なので、原則質問本文に反映してください。
回答1件
あなたの回答
tips
プレビュー