Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

長文入力対応 エラー修正 #4

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .firebaserc

This file was deleted.

2 changes: 1 addition & 1 deletion public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" type="text/css" href="./static/css/index.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.min.js"></script>
<!-- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.min.js"></script> -->
<!-- <script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script> -->

<title>EEEMO</title>
Expand Down
13 changes: 6 additions & 7 deletions public/static/css/recog.css
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,15 @@ body {
}

#span-res {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 0%;
width: 120%;
padding: 0px;
margin: 0px;
width: auto;
/* width: 120%; */
font-size: 10em;
margin:0;
display : inline-block;
white-space : nowrap;
overflow: hidden;
line-height: 1.4;
overflow: visible;
line-height: 1.4;
}

.animation {
Expand Down
2 changes: 1 addition & 1 deletion public/static/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ var textUpdateTimeoutID = 0;
var textUpdateTimeoutSecond = 30;
var start_flag = false;

const start_tango = ['いいも','スタート','妹','すたーと','今','いいの','いいよ','芋','いーも','良いも','いいね','えーも'];
const start_tango = ['いい','うーも','ウーモ','スタート','妹','すたーと','今','いいの','いいも','芋','いーも','良いも','いいね','えーも'];

function searchStartWord(transcript, word_list){
for (const key of word_list) {
Expand Down
166 changes: 120 additions & 46 deletions public/static/js/recog.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
const resText = document.querySelector('#result-text');
const resRes = document.querySelector('#span-res');

let finalTranscript = ''; // 確定した(黒の)認識結果
let neko_flag = false;
let finish_flag = false;
let found_word = "みつけた";
let found_index = 0;

const finish_word = ['終了','妹オフ','いいのオフ','芋オフ','いーもオフ','えもオフ','えーもオフ','えーオフ','イーオフ','フィニッシュ','終わり'];

Expand Down Expand Up @@ -74,6 +75,7 @@ const good_hand = ['&#x1f44c;','&#x1f91f;','&#x1f918;','&#x1f919;',
const kyocyo_kigou = ['&#x203c;','&#x2049;','&#x2757;']
//‼,⁉

const ng_word_list=['AV','セックス','童貞','風俗','無修正','エッチ','チンコ']
let wordLists = [yorokobi_tango, kanasimi_tango, ikari_tango, kurui_tango, odoroki_tango, nayami_tango];
let emojiLists = [yorokobi_emoji, kanasimi_emoji, ikari_emoji, kurui_emoji, odoroki_emoji, nayami_tango];
let emojiOthers = [good_hand, kyocyo_kigou];
Expand Down Expand Up @@ -115,11 +117,47 @@ function setHashEmoji(transcript, tangos){

let res = arr[Math.floor(Math.random() * num)];
console.log(transcript.indexOf(key));
found_word = key;
console.log(key);
found_index = transcript.indexOf(key)+key.length;
return res
}
}
}

//文字列に挿入する関数
function strIns(str, idx, val){
var res = str.slice(0, idx) + val + str.slice(idx);
return res;
}

//絵文字に変換できるワードを返す関数
function emojiWord(transcript, tangos){
let reultText;
for(const key of Object.keys(tangos)){
const regex = new RegExp(key);
if (regex.test(transcript)){

var arr = Array.from(tangos[key]);
var num = arr.length;
console.log(Math.floor(Math.random() * num));

let res = arr[Math.floor(Math.random() * num)];
console.log(transcript.indexOf(key));
return key
}
}
}

function changeNG(transcript){
result=transcript
ng_word_list.forEach(function( value ) {
result=result.replace(value,'✋');
console.log("ng");
});
return result
}

//後でクロージャーにしたい
function searchTango(transcript, wordLists, emojiLists, tangos, neko_flag){
//judge neko mode(default false)
Expand All @@ -144,6 +182,8 @@ function searchTango(transcript, wordLists, emojiLists, tangos, neko_flag){
return emoji;
}



//クソコード(破壊的)
function judgeNekoMode(transcript){
const neko = new RegExp('猫');
Expand All @@ -166,18 +206,15 @@ function searchFinishWord(transcript, word_list){
}

recognition.onresult = (event) => {

let transcript;
let emoji_res;
let emoji;
let result;
for (let i = event.resultIndex; i < event.results.length; i++) {
transcript = event.results[i][0].transcript;
console.log(event.results[i].isFinal);
if (event.results[i].isFinal) {
recognition.stop()
//初期化
$('#span-res').removeClass("animation");
$('#span-res').css('padding-left','0%');

finish_flag = searchFinishWord(transcript, finish_word);
//finalTranscript = transcript;
Expand All @@ -190,74 +227,111 @@ recognition.onresult = (event) => {
const num = Math.floor(Math.random() * emojiOthers.length);
const num2 = Math.floor(Math.random() * emojiOthers[num].length);
emoji = emojiOthers[num][num2];
}
var num = Math.floor(Math.random()*(5-1)+1);
emoji_res = emoji.repeat(num);
let result = transcript + emoji_res;
const num3 = Math.floor(Math.random()*(5-1)+1);
emoji_res = emoji.repeat(num3);
//絵文字がなかった場合は最後に加える
result = transcript + emoji_res;

}else{
var num = Math.floor(Math.random()*(3-1)+1);
emoji_res = emoji.repeat(num);
//result = transcript + emoji_res;
result = strIns(transcript, found_index,emoji_res);
}
//絵文字になる単語が見つかったらその単語を返す
//返した単語に対してindexofを行う->pos_emoji
//transcriptのpos_emojiまでを切り取り絵文字をくっつけたものと
//pos_emojiから後ろの部分の文をつくる
//繰り返す
//絵文字がなかった場合は終了

//setHashで絵文字一つ一つが文に入っているかを調べている
//よってみつけるたびに絵文字を挿入すればよい?
//文の最後に加える
//let result = transcript + emoji_res;
result = changeNG(result);
resRes.innerHTML = result;
//animationが動いている時は、現在の文字に付け足す
if (anime_flag){
const newSpan = document.createElement("span");
newSpan.innerHTML = result;
resText.appendChild(newSpan);
newSpan.classList.add("new-span");
newSpan.classList.add("animation");
}else{
$('span').remove()
resRes.innerHTML = result;
//初期化
$('#span-res').removeClass("animation");
$('#span-res').css('padding-left','0%');
}


let moji_count = transcript.length+num;
console.log(resRes.clientWidth);
console.log((transcript.length+num));
//取得した文字数
if(moji_count >= 12){
if(moji_count >= 12 && !anime_flag){
$('#span-res').addClass("animation");
$('#span-res').css('padding-left','100%');

// if(moji_count >= 12 && moji_count < 16){
// $(".animation").animate( { duration: 10000, easing: 'linear' } );
// }else if(moji_count >= 16 && moji_count < 20){
// $(".animation").animate( { duration: 14000, easing: 'linear' } );
// }else if(moji_count >= 20 && moji_count < 27){
// $(".animation").animate({ duration: 22000, easing: 'linear' } );
// }else if(moji_count >= 27 && moji_count < 33){
// $(".animation").animate({ duration: 29000, easing: 'linear' } );
// }else if(moji_count >= 33 && moji_count < 37){
// $(".animation").animate({ duration: 36000, easing: 'linear' } );
// }else if(moji_count >= 37 && moji_count < 42){
// $(".animation").animate( { duration: 42000, easing: 'linear' } );
// }else{
// $(".animation").animate({ duration: 50000, easing: 'linear' } );
// }
$('#span-res').css('padding-left','20%');

//速さを変更
if(moji_count >= 12 && moji_count < 16){
$(".animation").animate( { duration: 12000, easing: 'linear' } );
$(".animation").animate( { duration: 12000, easing: 'linear',queue: true } );
}else if(moji_count >= 16 && moji_count < 20){
$(".animation").animate( { duration: 16000, easing: 'linear' } );
$(".animation").animate( { duration: 16000, easing: 'linear',queue: true } );
}else if(moji_count >= 20 && moji_count < 27){
$(".animation").animate({ duration: 27000, easing: 'linear' } );
$(".animation").animate({ duration: 27000, easing: 'linear',queue: true } );
}else if(moji_count >= 27 && moji_count < 33){
$(".animation").animate({ duration: 33000, easing: 'linear' } );
$(".animation").animate({ duration: 33000, easing: 'linear' ,queue: true } );
}else if(moji_count >= 33 && moji_count < 37){
$(".animation").animate({ duration: 43000, easing: 'linear' } );
$(".animation").animate({ duration: 43000, easing: 'linear',queue: true } );
}else{
$(".animation").animate({ duration: 50000, easing: 'linear' } );
$(".animation").animate({ duration: 50000, easing: 'linear',queue: true } );
}
anime_flag = true;
}else{
$('#span-res').removeClass("animation");
$('#span-res').css('padding-left','0%');
if (anime_flag){
}else{
$('span').remove()
$('#span-res').removeClass("animation");
$('#span-res').css('padding-left','0%');
anime_flag = false;
}
}

} else {
}else{
// $('#span-res').removeClass("animation");
// $('#span-res').css('padding-left','0%');
// anime_flag = false;
if(transcript.length >= 13 && !anime_flag){
resRes.innerHTML = '<i style="color:#ddd;">' + transcript + '</i>';
//interimTranscript = transcript;
//transcript = "~~~~~~~~~~";
emoji_res = "";
$('#span-res').removeClass("animation");
$('#span-res').css('padding-left','0%');
resRes.innerHTML = "";
}
}

// document.getElementById("result-div").animation-duration = 0;
console.log(transcript);
}
}


//animation終了時に文字を消す
resRes.addEventListener('animationend', () => {
// アニメーション終了後に実行する内容
if (resText.hasChildNodes() && anime_flag){
$(".animation").animate( { duration: 12000, easing: 'linear',queue: true } );
}else if(resText.hasChildNodes() && !anime_flag){
$('span').remove();
}
console.log("animation end");
$('#span-res').css('padding-left','30%');
emoji_res = "";
anime_flag = false;
})

recognition.start();
//永続化(SSL化すれば、マイク入力許可なしでいけるらしい)
recognition.onend = () =>
{
console.log("onend");
recognition.start();

if (finish_flag){
Expand Down Expand Up @@ -295,13 +369,13 @@ recognition.onerror = () =>

recognition.onnomatch = () =>
{

resRes.innerHTML = "認識できません"+"🙇‍♂";
};


recognition.onspeechend = () =>
{
//console.log("On no match is called");
console.log("On no sppechend is called");
// try{
// recognition.stop();
// recognition.start();
Expand Down
14 changes: 7 additions & 7 deletions public/static/js/tango.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
const tangos = {
'シュン':['😔'],
'いらっしゃい':['😌'],
'いらっしゃい':['🈺'],
'資料':['📄'],
'ラコステ':['🐊'],
'やな先輩':['😩'],
'仕事減ら':[`😤`],
'忘れ':['🤦‍♀'],
'全く':[`😤`],
'日本':['🇯🇵'],
"サンドイッチ": [
"🥪"
],
'パン': ["🍞","🥐","🥖","🥪"],
'フレンチトースト': ["🍞"],
'マフィン': ["🥧"],
'フランスパン':['🥖'],
'何回目?':['😡'],
'草': ['&#x1f923;',"🌾","🌿","☘","🍀"],
'ぴえん': ['&#x1f97a;'],
Expand Down Expand Up @@ -6565,9 +6571,6 @@ const tangos = {
"バゲット": [
"🥖"
],
"フランスパン": [
"🥖"
],
"アレパ": [
"🫓"
],
Expand Down Expand Up @@ -6694,9 +6697,6 @@ const tangos = {
"ホットドッグ": [
"🌭"
],
"サンドイッチ": [
"🥪"
],
"タコス": [
"🌮"
],
Expand Down