web-dev-qa-db-ja.com

iOS音声シンセサイザーをプログラムで使用する方法は? (テキストからスピーチ)

iOSデバイスには、アクセシビリティのVoiceOver機能用の音声シンセサイザーが組み込まれています。これらのシンセサイザーをプログラムで使用してテキストベースのサウンドを生成する方法はありますか?

私の問題は、子供が色を学ぶためのシンプルなアプリに取り組んでおり、サポートしたい各言語で色の名前を記録してオーディオファイルとして保存するのではなく、実行時にサウンドを生成することですテキスト読み上げ機能。

ありがとう

[編集:この質問はiOS7より前に行われたので、ソフトウェアの考古学者でない限り、投票された回答を本当に考慮し、古い回答を無視する必要があります]

39
Dirty Henry

IOS 7以降、Appleは this APIを提供します。

this answerを参照してください。

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)
62
Onato
#import <AVFoundation/AVFoundation.h>

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

このコードは、シミュレーターとiPhone 6の両方でSwiftおよびiOS 8で動作しました。標準のAVFoundationライブラリーを追加する必要がありました。

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

残念ながら、iOSはプログラムで音声を生成するためのパブリックAPIを公開していません。

App Storeに送信しない場合は、 プライベートAPI を使用できます。

それ以外の場合、使用できるサードパーティライブラリの数については、 この質問 への応答を参照してください。

3
yuji

これらのサードパーティAPIを試すことができます: iSpeech または OpenEars

0
Demz

これは役に立つでしょう iPhoneアプリケーションをアクセス可能にする

「iPhone Accessibility API and Tools」で述べたように、標準のUIKitコントロールとビューには自動的にアクセスできます。標準のUIKitコントロールのみを使用する場合、おそらくアプリケーションにアクセスできるようにするために追加の作業を行う必要はありません。この場合、次のステップは、これらのコントロールが提供するデフォルトの属性情報がアプリケーションで意味をなすようにすることです。これを行う方法については、「正確で役立つ属性情報を提供する」を参照してください。

0
Ocelot