2014-09-29 13 views
10

Avevo un codice in iOS 7 per utilizzare la sintesi vocale, tutto è andato bene. Per definire il mio tasso di velocità AVSpeechUtterance, ho usato la seguente formulaAVSpeechVelocità di avvio in iOS 8

float speakSpeedRate = (AVSpeechUtteranceMinimumSpeechRate + AVSpeechUtteranceDefaultSpeechRate)*0.5; 

ma sembra, almeno sul mio iPhone 5S, che sotto iOS 8, AVSpeechUtteranceDefaultSpeechRate è molto più veloce di quanto non fosse in iOS 7.

Qualcuno l'ha provato?

EDIT: ho passato dev forum di Apple, sembra che gli altri incontrato questo bug, ma potrebbe dipendere da altri parametri, come il linguaggio ...

+0

grazie per le info utili – Fattie

risposta

5

Sì. TTS su iOS8 ha più problemi (e, imho, gravemente rotto): non ha funzionato nel simulatore, ha problemi con voci mute, richiede impostazioni di accessibilità, la velocità è diversa da iOS7, ecc. Basta cercare SO per i tag "ios8 "e" AVSpeechSynthesizer "e scopri il pacchetto di bug!

Soluzione? Aspetta solo l'aggiornamento e continua a postare i radar.

Soluzione alternativa? Misura il tempo per pronunciare una frase nota su iOS7 e iOS8 e correggi la frequenza effettiva per iOS8.

upd dec-2014: XCode 6.2 beta2 ha risolto i problemi con TTS in simulatore e frequenza TTS.

+1

questo, o come la risposta di JSA986 suggeriscono, variare la velocità a qualche numero magico ... Il problema è che devo ancora cercare gli aggiornamenti SDK e il check-in quale versione questa è fissato ... – Vinzzz

+0

Sto ancora riscontrando questo problema con diverse conversazioni in iOS 7.1 vs 8.3 usando Xcode 6.3.1 – tagy22

+2

Anche questo è ancora un problema con iOS 8.4. – picciano

2

Sì Ho notato questo, ive regolato il mio discorso Utterance velocità per float speechSpeed = 0.1000;

9

Stesso probleme qui. Quindi l'ho gestito dando un valore diverso. Sembra che iOS8 raddoppia la velocità.

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) 
{ 
    speechUtterance.rate = 0.15; 
}else{ 
    speechUtterance.rate = 0.3; 
} 
+0

Penso che questo sia il modo ufficiale per verificare la versione 'if (floor (NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1)' – Andreas

+0

@Andreas Grazie per il tuo feedback, risposta aggiornata. –