2012-03-30 19 views
38

I dispositivi iOS dispongono di sintetizzatori vocali incorporati per la funzione VoiceOver di Accessibility. C'è un modo per utilizzare questi sintetizzatori a livello di codice per generare suoni basati sul testo?Come utilizzare a livello di programmazione i sintetizzatori vocali iOS? (sintesi vocale)

Il mio problema è: sto lavorando su una semplice app per i bambini per imparare i colori e piuttosto che registrare i nomi dei colori in ogni lingua che voglio supportare e archiviarli come file audio, preferisco generare il suona in runtime con alcune funzionalità di sintesi vocale.

Grazie

[EDIT: questa domanda è stato chiesto di pre-iOS7 così si dovrebbe davvero prendere in considerazione la risposta votato e ignorare quelli più anziani, a meno che non sei un archeologo software]

risposta

61

A partire da iOS 7, Apple fornisce this API .

Vedere la risposta this.

Objective-C

#import <AVFoundation/AVFoundation.h> 
… 
AVSpeechUtterance *utterance = [AVSpeechUtterance 
          speechUtteranceWithString:@"Hello World!"]; 
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init]; 
[synth speakUtterance:utterance]; 

Swift

import AVFoundation 
… 
let utterance = AVSpeechUtterance(string: "Hello World!") 
let synth = AVSpeechSynthesizer() 
synth.speakUtterance(utterance) 
+0

Possiamo salvare la voce pronunciata come file mp3? –

+0

@Onato Come posso interrompere la sintesi vocale? – ShreePool

4

Purtroppo iOS non espone un'API pubblica per la generazione di parole al livello di programmazione.

C'è uno private API che è possibile utilizzare, se non si invia all'App Store.

Altrimenti, vedere le risposte a this question per un numero di librerie di terze parti che è possibile utilizzare.

+7

Desideriamo che la gente di Apple venga qui e la legga come una richiesta "please-make-the-api-public";) –

+1

Apple non presta attenzione nemmeno alle richieste inviate direttamente a loro quindi non spero troppo :( – MrTJ

+7

in effetti, Apple l'ha fatto. :) –

0

si potrebbe trovare questo utile Making Your iPhone Application Accessible

Come indicato nel “iPhone Accessibility API e Tools,” controlli UIKit standard e viste sono automaticamente accessibili. Se utilizzi solo controlli UIKit standard, probabilmente non devi fare molto lavoro aggiuntivo per assicurarti che l'applicazione sia accessibile. In questo caso, il passaggio successivo è garantire che le informazioni sugli attributi predefinite fornite da questi controlli abbiano senso nell'applicazione. “Fornitura preciso e utile informazione attributo” Per imparare a fare questo, vedere

11
#import <AVFoundation/AVFoundation.h> 

AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init]; 
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Text to say"]; 
[av speakUtterance:utterance]; 
+0

È possibile salvare la voce pronunciata nel file mp3? –

4

Questo codice ha funzionato per me con Swift e iOS 8 sia su Simulator e iPhone 6. Ho bisogno di aggiungere l'AVFoundation di serie biblioteca:

import AVFoundation 

// ... 

func onSayMeSomething() { 
    let utterance = AVSpeechUtterance(string: "Wow! I can speak!") 
    utterance.pitchMultiplier = 1.3 
    utterance.rate = AVSpeechUtteranceMinimumSpeechRate * 1.5 
    let synth = AVSpeechSynthesizer() 
    synth.speakUtterance(utterance) 
} 
Problemi correlati