web-dev-qa-db-fra.com

iOS Text To Speech Api

Je n'arrive pas à trouver quoi que ce soit à ce sujet. Y a-t-il des classes Siri ou des API dans iOS7 qui vous permettent de faire du texte en synthèse vocale? Tout ce que j'essaie de faire est quelque chose comme ceci:

[siriInstance say:@"This is a test"];

Et ensuite, Siri le dis depuis mon application.

Il semble que nous devrions être capables de faire cela, non? Cela semble être une chose banale.

44
Jesse

Depuis iOS 7, vous avez une nouvelle API TTS.

En objectif C

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Some text"];
[utterance setRate:0.2f];
[synthesizer speakUtterance:utterance];

En rapide

let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "Some text")
utterance.rate = 0.2

Vous pouvez aussi changer la voix comme ceci: 

utterance.voice = AVSpeechSynthesisVoice(language: "fr-FR")

Et puis speek 

  • Dans Swift 2synthesizer.speakUtterance(utterance)

  • Dans Swift 3synthesizer.speak(utterance)

N'oubliez pas de import AVFoundation 

Méthodes utiles 

Vous pouvez arrêter ou suspendre tous les discours en utilisant ces deux méthodes: 

- (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;
- (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;

La AVSpeechBoundary indique si le discours doit être suspendu ou arrêté immédiatement (AVSpeechBoundaryImmediate) ou s'il doit être suspendu ou arrêté après la parole en cours de prononciation (AVSpeechBoundaryWord).

Vérifiez le AVSpeechSynthesizer Doc

131
Ali Abbas

Voici la réponse d’ALi ABBAS pour une utilisation dans une aire de jeux: 

import UIKit
import AVKit
import AVFoundation
import PlaygroundSupport

var str = "Hello, playground"

let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: str)
utterance.rate = 0.4
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")

//for playground only
let playerViewController = AVPlayerViewController()
PlaygroundPage.current.liveView = playerViewController.view
//

synthesizer.speak(utterance)    
6
Matt Bearson

Je n'ai jamais travaillé spécifiquement avec Siri. Je me trompe peut-être, mais je pense que l'intégration avec Siri est très difficile avec les API privées.

Je voudrais jeter un coup d'œil au framework openears pour IOS. J'ai déjà effectué des travaux de base sur ce sujet dans le passé. Il prend en charge la reconnaissance vocale hors ligne et la synthèse parole/texte à parole

Hope this vous aide.

3
Tim

Ici vous trouverez un exemple d'application de synthèse vocale (TTS) (Objective-C) basé sur this

0
d1jhoni1b