web-dev-qa-db-fra.com

Comment utiliser par programmation les synthétiseurs vocaux iOS? (texte pour parler)

les appareils iOS ont des synthétiseurs vocaux intégrés pour la fonction VoiceOver d'Accessibility. Existe-t-il un moyen d'utiliser ces synthétiseurs par programmation pour générer des sons textuels?

Mon problème est: je travaille sur une application simple pour que les enfants apprennent les couleurs et plutôt que d'enregistrer les noms des couleurs dans chaque langue que je veux prendre en charge et les stocker sous forme de fichiers audio, je préfère générer les sons à l'exécution avec une fonction de synthèse vocale.

Merci

[EDIT: cette question a été posée avant iOS7, vous devriez donc vraiment considérer la réponse votée et ignorer les plus anciennes, sauf si vous êtes un archéologue logiciel]

39
Dirty Henry

À partir d'iOS 7, Apple fournit this API.

Voir cette réponse.

Objectif-C

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

Rapide

import AVFoundation
…
let utterance = AVSpeechUtterance(string: "Hello World!")
let synth = AVSpeechSynthesizer()
synth.speakUtterance(utterance)
62
Onato
#import <AVFoundation/AVFoundation.h>

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

Ce code a fonctionné pour moi avec Swift et iOS 8 sur Simulator et iPhone 6. J'avais besoin d'ajouter la bibliothèque AVFoundation standard:

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)
}
5
Alex Malko

Malheureusement, iOS n'expose pas d'API publique pour générer de la parole par programmation.

Il y a une API privée que vous pouvez utiliser si vous ne soumettez pas à l'App Store.

Sinon, consultez les réponses à cette question pour un certain nombre de bibliothèques tierces que vous pouvez utiliser.

3
yuji

Vous pouvez essayer ces API tierces: iSpeech ou OpenEars

0
Demz

vous pourriez trouver cela utile Rendre votre application iPhone accessible

Comme indiqué dans "API et outils d'accessibilité pour iPhone", les commandes et vues UIKit standard sont automatiquement accessibles. Si vous utilisez uniquement des contrôles UIKit standard, vous n'aurez probablement pas à faire beaucoup de travail supplémentaire pour vous assurer que votre application est accessible. Dans ce cas, votre prochaine étape consiste à vous assurer que les informations d'attribut par défaut fournies par ces contrôles sont pertinentes dans votre application. Pour savoir comment procéder, voir "Fournir des informations d'attribut précises et utiles".

0
Ocelot