2015-02-07 11 views
14

Metni metne dönüştürmek için Android TTS API'sini kullanan bir sınıfa sahibim. Saha ve hızı kontrol edebilirim; ancak motorun bir metin dizesi ve ayrıca bir karma nesne gerektirdiğini fark ettim. Bazı kelimelerin kolayca tanınması için çok hızlı bir şekilde telaffuz edildiğini fark ettim ve bükülme çok doğal görünmüyor. Bu iki şeyi kontrol etmenin bir yolu var mı? muhtemelen HashMap aracılığıyla? Aşağıda, I motorunu kullanıyorum nasıl:Android TTS'nin nasıl çalıştığını nasıl kontrol edebilirim Ses

mTts = new TextToSpeech(Globals.context, this); // context, listener 
} 

@Override 
public void onInit(int status) { 
    HashMap<String, String> myHashRender = new HashMap(); 
    myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speech); 
    mTts.setPitch(0.8f); 
    mTts.setSpeechRate(0.6f); 
    mTts.synthesizeToFile(speech, myHashRender, fileOutPath); 
    while (mTts.isSpeaking()) try { 
     Thread.sleep(100); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    mTts.stop(); 
    mTts.shutdown(); 
+0

Google TTS şu anda değiştirmeyi desteklememektedir, ayrıca [SSML] (http://help.voxeo.com/go/help/xml.vxml.elements.prosody) içinde tanımlandığı gibi satır içi etiketlerini desteklememektedir. Diğer TTS motorlarının bu özellikleri desteklemesi olasıdır, ancak hiçbirinin farkında değilim. – alanv

+0

Öyleyse neden yöntem bir hashmap ve bir dize alıyor? – motoku

+0

Ayarlayabileceğiniz parametreler vardır, ancak bunların hiçbiri bükülme ya da kelime başına temsilci kontrol etmez. – alanv

cevap

4

Google TTS şu anda yaptığı destekleyen, ancak burada yapabilecekleriniz: metnin ayrıştırma sırasında, istediğiniz tonlama ve dönüm almak için bazı kısımlarını değiştirebilir.

Örneğin, 'Hey' sözcüğüyle karşılaşırsanız, farklı bir telaffuz almak için TTS motoruna göndermeden önce 'Heeeey' seçeneğine anında yeniden yazabilirsiniz.

Bu hoş değil ama bir geçici çözüm.

+1

Belirli kelimelerle ilişkili meta verileri değiştirmek için TtsSpan kullanmayı da düşünebilirsiniz. IIRC, bu açık telaffuz belirtmenize izin veriyor. – alanv

+0

Bu oldukça eski bir iş parçacığı oldu. ama google TTS hala pek çok dokümantasyonda arandığında SSML etiketlerini desteklemiyor. Bazı etiketler kullanmayı denedim. sadece çalışıyor. Bu etiketin nasıl çalıştığını ssml desteklemiyor acaba? –

3

Google TTS değil şu anda desteklemediği dönüm değişen yapar, ne SSML tanımlanan bu destek satır içi aruz etiketlerini yapar. - alanvJun 5 at 20:30

0

Google TTS şu anda değiştirmeyi desteklememektedir, ayrıca SSML'da tanımlandığı gibi satır içi etiketleri desteklememektedir. Ayarlayabileceğiniz parametreler olsa da bunların hiçbiri bükülme ya da kelime başına proseyi kontrol etmez.

Bu özellikleri destekleyen başka motorlar da olabilir. Örneğin, eSpeak, SSML etiketlerini destekliyor ve Google Play Store'da kullanılabilen bir Android bağlantı noktasına sahip.

İlgili konular