1

私はクロム拡張機能を開発しており、音声入出力に tts と ttsengine を使用しています。しかし、私の拡張機能には、便利なエラーコードなしでクラッシュするクロムがあります (Chrome は予期せず終了しますProcess: Google Chrome [888])

javascript メソッドを呼び出すと、chrome.experimental.speechInput.start(function(){})chrome がクラッシュします。

Google が提供する別の拡張機能である Speech Recognizer を試してみましたが、うまく機能し、google.com での音声入力もうまく機能します。試験的フラグが設定されました。

音声からテキストへの変換を機能させるための追加の許可やその他の手順はありますか?

私のmanifest.json:

{
"name": "my_extension",

"version": "0.1",

"manifest_version": 2,

"description": "my description",

"icons": {
    "16": "icon16.png",
    "128": "icon128.png"
},

"app": {
    "launch": {
        "local_path": "/twitter/index.html"
    }
},

"offline_enabled": true,

"permissions": [
    "experimental",
    "unlimitedStorage",
    "https://api.twitter.com/*",
    "ttsEngine",
    "tts"
],

"tts_engine": {
    "voices": [{
        "lang": "de",
        "event_types": ["end"]
    }]
}
}

私の .js ファイル:

function startSpeechInput() {
    chrome.experimental.speechInput.onError.addListener(recognitionFailed);
    chrome.experimental.speechInput.onResult.addListener(recognitionSucceeded);
    chrome.experimental.speechInput.onSoundEnd.addListener(recognitionEnded);

    chrome.experimental.speechInput.isRecording(function (recording) {
        if (!recording) {
            chrome.experimental.speechInput.start({ 'language': 'en-US' }, function(){
                            //TODO
                    }

                    console.log("Voice recognition started!");
            });
        }
        else {
            console.log('Pressed Record while it is already recording. Do nothing...');
        }
    });
}
4

1 に答える 1

2

いくつかの変更を加えた後、コンテンツでうまくいきました。

スクリーンショット

出力生成

マニフェスト.json:

{
"name": "my_extension",

"version": "0.1",

"manifest_version": 2,

"description": "my description",

"icons": {
    "16": "icon.jpg",
    "128": "icon.jpg"
},

"app": {
    "launch": {
        "local_path": "index.html"
    }
},


"background":{
        "scripts": ["background.js"]
    },

    "offline_enabled": true,

"permissions": [
    "experimental",
    "unlimitedStorage",
    "https://api.twitter.com/*",
    "ttsEngine",
    "tts"
],

"tts_engine": {
    "voices": [{
        "lang": "de",
        "event_types": ["end"]
    }]
}
}

index.html

<html>
<head>
<script src="index.js">
</script>
</head>
<body>
</body>
</html>

index.js

function recognitionFailed(error) {
  alert("Speech input failed: " + error.code);
}

function recognitionSucceeded(result) {
  alert("Recognized '" + result.hypotheses[0].utterance + "' with confidence " + result.hypotheses[0].confidence);
}
function startSpeechInput() {
    chrome.experimental.speechInput.onError.addListener(recognitionFailed);
    chrome.experimental.speechInput.onResult.addListener(recognitionSucceeded);
    chrome.experimental.speechInput.onSoundEnd.addListener(function (){
        console.log("started");
    });

    chrome.experimental.speechInput.isRecording(function (recording) {
        if (!recording) {
            chrome.experimental.speechInput.start({ 'language': 'en-US' }, function(){

                    console.log("Voice recognition started!");
            });
        }
        else {
            console.log('Pressed Record while it is already recording. Do nothing...');
        }
    });
}
startSpeechInput();

background.js

function dummy() {

}
于 2012-11-20T14:31:31.430 に答える