在w3c草案中增長了對Web Speech Api的支持;主要做用在
兩個很是重要的方面:javascript
而chrome在版本33發佈後宣佈對該特性的支持;今天重要介紹第二部分。java
演示地址node
文檔和演示代碼git
// 你能夠直接打開你的控制檯粘貼下面代碼 var words = new SpeechSynthesisUtterance('Hello captain'); window.speechSynthesis.speak(words);
固然你還能夠修改不少參數去調整你的發音:github
volume
:聲音;web
rate
:發音速度;chrome
pitch
:音調;api
voice
:聲音;
language
:語言(en,zh,ja...更多參考)
var msg = new SpeechSynthesisUtterance(); var voices = window.speechSynthesis.getVoices(); msg.voice = voices[10]; // msg.voiceURI = 'native'; msg.volume = 1; // 0 to 1 msg.rate = 1; // 0.1 to 10 msg.pitch = 2; //0 to 2 msg.text = 'I am Stark'; msg.lang = 'en'; msg.onend = function(e) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); }; speechSynthesis.speak(msg);
你能夠經過下面函數獲取能夠使用的發音列表名稱
speechSynthesis.getVoices().forEach(function(voice) { console.log(voice.name, voice.default ? '(default)' :''); });
大概你能夠獲取下面的一個列表
// 省略一部分結果 Google Deutsch Google US English Google UK English Female Google UK English Male Google 日本語 Google 普通話(中國大陸) Google 國語(臺灣)
接下來咱們能夠試驗下改變發音名稱
var msg = new SpeechSynthesisUtterance('hey captain,sometime I just want to break you perfect teeth'); msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Google US English'; })[0]; speechSynthesis.speak(msg);
除了英文,咱們還能夠使用其餘語言
// 使用日語 var msg = new SpeechSynthesisUtterance('おはようございます'); msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Google 日本語'; })[0]; speechSynthesis.speak(msg); // or 使用中文 var msg = new SpeechSynthesisUtterance('美國隊長3'); msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Google 普通話(中國大陸)'; })[0]; speechSynthesis.speak(msg);
Chrome 33+
iOS7 safari部分支持 (測試iOS8支持,iOS9不支持)
兼容性檢測
if ('speechSynthesis' in window) { // Synthesis support. Make your web apps talk! }
若是對於不支持的瀏覽器,咱們能夠使用老的方法,即將須要發音的單詞發送到服務端進行處理,返回一個音頻,相似以下:
// 使用來自谷歌翻譯的音頻 var audio = new Audio(); audio.src ='http://translate.google.com/translate_tts?ie=utf-8&tl=en&q=' + encodeURI('hello captain'); audio.play();
固然咱們若是追求快速開發的話,咱們如今依舊有成熟的框架來支持這個功能,讓他實現更多瀏覽器的支持。
ResponsiveVoice.JS 是一款基於html5的跨平臺的發音支持類庫,支持超過56種語言和168種
聲音,分爲免費版和商業版。Demo
speak.js 基於eSpeack改造而來的一款js單詞拼讀類庫.
meSpeak.js 是一個100%的客戶端發音類庫,支持chrome和safari,而且無須要任何html元素;
say.js一款基於node.js的發音擴展類庫。
持續更新中...