Skip to content

Commit

Permalink
リファクタリング
Browse files Browse the repository at this point in the history
  • Loading branch information
Robot-Inventor committed Jul 12, 2020
1 parent 087ff93 commit da48280
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 60 deletions.
3 changes: 2 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,14 @@ Edition: ORIZIN Agent HTML
#### 削除
- アップデートチェッカーを完全に削除します。

### [v3.3.100.6dev-Crane] - 2020-07-12
### [v3.3.100.6dev-Crane] - 2020-07-13
#### 変更
- 連続音声認識が有効になっている場合でも,テキストボックスがフォーカスされている際には音声認識を再開しない仕様に変更しました。
- 音声認識中にテキストボックスをクリックすると,自動で音声認識を終了する仕様に変更しました。

#### 修正
- v3.1.85.5dev-Craneのコミットe0612cd9d9ef818c67dc5ffd14920cfd7abcf194で発生した,連続音声認識が動作しないバグを修正しました。
- リファクタリングを行いました。

### [v3.3.99.5-Crane] - 2020-07-10
#### 追加
Expand Down
130 changes: 72 additions & 58 deletions resource/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,51 @@
chat_area_element.scrollTop = chat_area_element.scrollHeight;
}

function chat_and_speak(chat_content, speak_content="") {
if (arguments[1] === undefined) {
speak_content = chat_content;
}
add_chat(chat_content);
start_speak(speak_content);
}

function recognition_error(error_str) {
recognition_error_happened = true;
if (error_str == "aborted") {
if (auto_recognition_abort) {
auto_recognition_abort = false;
document.getElementById("start_recognition").disabled = false;
} else {
error_message = "音声認識を終了しました。";
chat_and_speak(error_message);
}
} else if (error_str == "no-speech") {
error_message = "認識可能な音声を検出できませんでした。";
chat_and_speak(error_message);
} else if (error_str == "network") {
error_message = "音声認識を使用するにはネット接続が必要です。";
chat_and_speak(error_message);
} else if (error_str == "audio-capture") {
error_message = "オーディオキャプチャーに失敗しました。";
chat_and_speak(error_message);
} else if (error_str == "not-allowed") {
error_message = "音声入力が許可されていません。設定を確認して下さい。";
chat_and_speak(error_message);
} else if (error_str == "service-not-allowed") {
error_message = "必要な音声サービスが許可されていませんでした。";
chat_and_speak(error_message);
} else if (error_str == "language-not-supported") {
error_message = "サポートされていない言語です。";
chat_and_speak(error_message);
} else if (error_str == "bad-grammar") {
error_message = "内部処理の文法にエラーがありました。";
chat_and_speak(error_message);
} else {
error_message = "音声認識の際に不明なエラーが発生しました。";
chat_and_speak(error_message + "<br><br>エラーメッセージ:<br>" + error_str, error_message)
}
}

async function response(content) {
document.body.style.cursor = "progress";
add_chat(content, true);
Expand Down Expand Up @@ -372,65 +417,21 @@
const recognition = new SpeechRecognition();
recognition.onresult = function() {
response(event.results[0][0].transcript);
is_listening = false;
listening_status(false);
}
recognition.onaudioend = function() {
if (!is_doing_speech_synthesis) {
document.getElementById("listening_message").style.opacity = 0;
document.getElementById("start_recognition").disabled = true;
document.getElementById("start_recognition").classList.remove("listening");
is_listening = false;
listening_status(false);
}
}
recognition.onnomatch = function() {
error_massage = "音声を正しく認識できませんでした。もう一度試してみて下さい。";
add_chat(error_massage);
start_speak(error_massage);
error_message = "音声を正しく認識できませんでした。もう一度試してみて下さい。";
add_chat(error_message);
start_speak(error_message);
}
recognition.onerror = function(event) {
recognition_error_happened = true;
if (event.error == "aborted") {
if (auto_recognition_abort) {
auto_recognition_abort = false;
document.getElementById("start_recognition").disabled = false;
} else {
error_massage = "音声認識を終了しました。";
add_chat(error_massage);
start_speak(error_massage);
}
} else if (event.error == "no-speech") {
error_massage = "認識可能な音声を検出できませんでした。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "network") {
error_massage = "音声認識を使用するにはネット接続が必要です。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "audio-capture") {
error_massage = "オーディオキャプチャーに失敗しました。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "not-allowed") {
error_massage = "音声入力が許可されていません。設定を確認して下さい。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "service-not-allowed") {
error_massage = "必要な音声サービスが許可されていませんでした。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "language-not-supported") {
error_massage = "サポートされていない言語です。";
add_chat(error_massage);
start_speak(error_massage);
} else if (event.error == "bad-grammar") {
error_massage = "内部処理の文法にエラーがありました。";
add_chat(error_massage);
start_speak(error_massage);
} else {
error_massage = "音声認識の際に不明なエラーが発生しました。";
add_chat(error_massage + "<br><br>エラーメッセージ:<br>" + event.error);
start_speak(error_massage);
}
recognition_error(event.error);
}
recognition.onspeechstart = function() {
document.getElementById("user_speaking_status").style.opacity = "1"
Expand All @@ -441,20 +442,33 @@

is_listening = false;

function listening_status(status=false) {
if (arguments[0] !== undefined) {
if (status) {
document.getElementById("listening_message").style.opacity = 1;
document.getElementById("start_recognition").classList.add("listening");
is_listening = true;
} else {
document.getElementById("listening_message").style.opacity = 0;
document.getElementById("start_recognition").classList.remove("listening");
is_listening = false;
}
return is_listening;
} else {
return is_listening;
}
}

function start_recognition() {
recognition_error_happened = false;
if (!is_doing_speech_synthesis) {
is_requested_by_text = false;
if(is_listening) {
if (listening_status()) {
recognition.abort();
document.getElementById("listening_message").style.opacity = 0;
document.getElementById("start_recognition").classList.remove("listening");
is_listening = false;
listening_status(false);
} else if (document.getElementById("requestForm") != document.activeElement) {
recognition.start();
document.getElementById("listening_message").style.opacity = 1;
document.getElementById("start_recognition").classList.add("listening");
is_listening = true;
listening_status(true);
}
}
}
Expand All @@ -466,7 +480,7 @@
} else {
send_button.disabled = true;
}
if (is_listening) {
if (listening_status()) {
auto_recognition_abort = true;
document.getElementById("start_recognition").click();
}
Expand Down
2 changes: 1 addition & 1 deletion resource/information.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ Series Name:ORIZIN Agent
Edition:ORIZIN Agent HTML
Version:v3.3.100.6dev
Code Name:Crane
Date:2020-07-12 JST
Date:2020-07-13 JST

0 comments on commit da48280

Please sign in to comment.