Skip to content

Commit

Permalink
add: tricky logic for android chrome :neckbeard:
Browse files Browse the repository at this point in the history
test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:

test: just test :neckbeard:
  • Loading branch information
bieshan committed Jan 3, 2021
1 parent 902adc9 commit 4f06e19
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const Home = () => {
const [detecting, setDetecting] = useState(false); // 音声認識ステータス
const [finalText, setFinalText] = useState(""); // 確定された文章
const [transcript, setTranscript] = useState("ボタンを押して検知開始"); // 認識中の文章
const [android, setAndroid] = useState(false); // Android chrome用のフラグ
// 単語検知
const initialTagValues = ["年収"]; // デフォルト検知単語
const candidates = ["年収", "自由", "成功"]; // 検知単語候補
Expand All @@ -35,28 +36,37 @@ const Home = () => {
alert("お使いのブラウザには未対応です");
return;
}

// Androidのためのプラグ
if (/Android/i.test(navigator.userAgent)) {
setAndroid(true);
};

// NOTE: 将来的にwebkit prefixが取れる可能性があるため
const SpeechRecognition =
window.SpeechRecognition || window.webkitSpeechRecognition;
recognizerRef.current = new SpeechRecognition();
recognizerRef.current.lang = "ja-JP";
recognizerRef.current.interimResults = true;
recognizerRef.current.continuous = true;
recognizerRef.current.onstart = () => {
setDetecting(true);
};
recognizerRef.current.onend = () => {
setTranscript("");
setDetecting(false);
if (detecting) {
recognizerRef.current.start();
};
};
recognizerRef.current.onresult = event => {
[...event.results].slice(event.resultIndex).forEach(result => {
const transcript = result[0].transcript;
if (result.isFinal) {
// 音声認識が完了して文章が確定
setFinalText(prevState => {
if (android) {
// Android chromeなら値をそのまま返す
return transcript;
};
return prevState + transcript;
});
// 文章確定したら候補を削除
setTranscript("");
return;
}
Expand Down Expand Up @@ -144,6 +154,7 @@ const Home = () => {
color="primary"
size="large"
onClick={() => {
setDetecting(true);
recognizerRef.current.start();
}}
>
Expand All @@ -158,7 +169,8 @@ const Home = () => {
color="secondary"
size="large"
onClick={() => {
recognizerRef.current.onend();
setDetecting(false);
recognizerRef.current.stop();
}}
>
{detecting ? "検知停止" : "検知待ち"}
Expand Down

0 comments on commit 4f06e19

Please sign in to comment.