2016-07-25 176 views
0

我在Ionic2框架,科爾多瓦插件尋找語音識別語音識別(語音到文本 - STT科爾多瓦插件)

如果可以實現,您能否輕輕提供一個代碼示例(.html和.ts)?

我發現了這個,但是用於Ionic1:http://devgirl.org/2016/01/08/speaking-with-cordova/,我無法修改Ionic2的代碼。

我真的很感謝你能提供的任何幫助,並且對我的小英文很抱歉。

+0

看看這個鏈接 - HTTPS: //github.com/gandhirajan/Cordova_Speech_Recognizer – Gandhi

+0

這是針對離子:( )如何將代碼轉換爲離子2? – mosca90

+0

請理解,但這正是您面臨的問題嗎? – Gandhi

回答

4

來源:https://github.com/macdonst/SpeechRecognitionPlugin

使用命令行,這個插件添加到您的Ionic2項目:

cd Your_Project_Root_Folder 

由於iOS的10它是強制性的,以在info.plist中添加一個NSMicrophoneUsageDescription訪問麥克風。

要添加此條目,您可以在插件安裝時通過MICROPHONE_USAGE_DESCRIPTION變量。

ionic plugin add https://github.com/macdonst/SpeechRecognitionPlugin --variable MICROPHONE_USAGE_DESCRIPTION="your usage message" 

在iOS 10和更大的,它使用的天然SFSpeechRecognizer(同Siri的)。 在iOS 9及更早版本中,它使用iSpeech SDK,需要一個API密鑰,在https://www.ispeech.org/上獲得一個,它是免費的。爲了提供鍵,添加此偏好的config.xml裏

<preference name="apiKey" value="yourApiKeyHere" /> 

的.ts的開頭添加聲明文件,只需導入後,類定義之前:

declare const SpeechRecognition: any; 

然後,在你的類:

recognition: any; 

constructor() {} 

SpeechToText() { 
    this.platform.ready().then(() => { 
     this.recognition = new SpeechRecognition(); 
     this.recognition.lang = 'en-US'; 
     this.recognition.onnomatch = (event => { 
      console.log('No match found.'); 
     }); 
     this.recognition.onerror = (event => { 
      console.log('Error happens.'); 
     }); 
     this.recognition.onresult = (event => { 
      if (event.results.length > 0) { 
       console.log('Output STT: ', event.results[0][0].transcript);    
      } 
     });  
     this.recognition.start(); 
    }); 
} 

iSpeech支持的語言有: 英語(加拿大)(EN -CA)英文(美國)(en-US)西班牙文(西班牙文)(es-ES)法文(法文)(fr-FR)意大利文(意大利文)(it-IT)波蘭文(波蘭文)(pl-PL)葡萄牙文(葡萄牙)(pt-PT)

ps:對於iOS 10錯誤kAFAssistantErrorDomain或者如果您必須等待結果,請檢查this

完成!

編輯:測試的離子V3.0.1(2017年4月6日)和正常工作:)

+0

你有這個代碼的工作示例?我得到了「語音識別未定義」錯誤 – aheigins

+0

此代碼在β-ionic2上運行良好。 RC發佈後,我不知道。 我正在升級項目,但現在,不是STT部分。 卡住sqlite問題... – mosca90

+0

@aheigins我更新了項目到ionic2 RC1,並按預期工作。代碼就是這樣,不需要改變。 – mosca90