您的位置:首页 > 其它

AVFoundation汉子转语音

2015-11-26 16:31 148 查看
#import <Foundation/Foundation.h>

#import <AVFoundation/AVFoundation.h>
@interface TXSoundPlayer :
NSObject
{

NSMutableDictionary* soundSet;
//声音设置

NSString* path; //配置文件路径
}

@property(nonatomic,assign)float rate;
//语速

@property(nonatomic,assign)float volume;
//音量

@property(nonatomic,assign)float pitchMultiplier;
//音调

@property(nonatomic,assign)BOOL autoPlay;
//自动播放
+(TXSoundPlayer*)soundPlayerInstance;
-(void)play:(NSString*)text;

-(void)setDefault;

-(void)writeSoundSet;

@end

static
TXSoundPlayer* soundplayer=nil;

@implementation TXSoundPlayer
+(TXSoundPlayer*)soundPlayerInstance
{

if(soundplayer==nil)
{

soundplayer=[[TXSoundPlayer
alloc]init];
[soundplayer
initSoundSet];
}

return
soundplayer;
}

//播放声音
-(void)play:(NSString*)text
{

if(![text isEqualToString:NULL])
{

AVSpeechSynthesizer* player=[[AVSpeechSynthesizer
alloc]init];

AVSpeechUtterance* u=[[AVSpeechUtterance
alloc]initWithString:text];//设置要朗读的字符串
u.voice=[AVSpeechSynthesisVoice
voiceWithLanguage:@"zh-CN"];//设置语言
u.volume=self.volume;
//设置音量(0.0~1.0)默认为1.0
u.rate=self.rate;
//设置语速
u.pitchMultiplier=self.pitchMultiplier;
//设置语调
[player
speakUtterance:u];
}
}

//初始化配置
-(void)initSoundSet
{

path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingPathComponent:@"SoundSet.plist"];

soundSet=[NSMutableDictionary
dictionaryWithContentsOfFile:path];

if(soundSet==nil)
{

soundSet=[NSMutableDictionary
dictionary];
[soundplayer
setDefault];
[soundplayer
writeSoundSet];
}

else
{

self.autoPlay=[[soundSet
valueForKeyPath:@"autoPlay"]
boolValue];

self.volume=[[soundSet
valueForKeyPath:@"volume"]
floatValue];

self.rate=[[soundSet
valueForKeyPath:@"rate"]
floatValue];

self.pitchMultiplier=[[soundSet
valueForKeyPath:@"pitchMultiplier"]
floatValue];
}
}

//恢复默认设置
-(void)setDefault
{

self.volume=0.7;

self.rate=0.166;

self.pitchMultiplier=2.0;
}

//将设置写入配置文件
-(void)writeSoundSet
{

[soundSet
setValue:[NSNumber
numberWithBool:self.autoPlay]
forKey:@"autoPlay"];

[soundSet
setValue:[NSNumber
numberWithFloat:self.volume]
forKey:@"volume"];

[soundSet
setValue:[NSNumber
numberWithFloat:self.rate]
forKey:@"rate"];

[soundSet
setValue:[NSNumber
numberWithFloat:self.pitchMultiplier]
forKey:@"pitchMultiplier"];

[soundSet
writeToFile:path
atomically:YES];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: