文字转语音

今天写了个文字转语音的方法,其实使用很简单,文档资料也很简单! 主要是一个类目:

.h文件

//

//  StrinToVoiceModel.h

//  文字转语音

//

//  Created by 赵小二 on 2018/6/1.

//  Copyright © 2018年 赵小二. All rights reserved.

//



/***********************

 当前只支持根据中文播放简体中文,也可以根据英文播放英式英语

 

 后期会慢慢完善各种语言转换

 **********************/


#import <Foundation/Foundation.h>

#import <AVFoundation/AVFoundation.h>


@interface StrinToVoiceModel : NSObject


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


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


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


@property(nonatomic,assign)BOOL  autoPlay;  //是否支持自动播放



/**

 实例化对象


 @return 返回当前类

 */

+ (StrinToVoiceModel *)playInit;



/**

 根据文字播放语音

 */

- (void)playWithString:(NSString *)string;


/**

 实例化的时候设置默认属性


 @param vloum 音量

 @param rate 语速

 @param pichMutiplier 音调

 */

- (void)setDefaultVloume:(float)vloum rate:(CGFloat)rate picchMutiplier:(CGFloat)pichMutiplier;

@end


.m文件

//

//  StrinToVoiceModel.m

//  文字转语音

//

//  Created by 赵小二 on 2018/6/1.

//  Copyright © 2018年 赵小二. All rights reserved.

//


#import "StrinToVoiceModel.h"


static StrinToVoiceModel *soundPalyer = nil;//设置静态变量,全局只实例化一次,并且不可更改类目


@implementation StrinToVoiceModel



+ (StrinToVoiceModel *)playInit{

    

    if (soundPalyer == nil) {

        soundPalyer = [[StrinToVoiceModel alloc] init];

        [soundPalyer setDefaultVloume:-1.0 rate:-1.0 picchMutiplier:-1.0];

    }

    return soundPalyer;

}


- (void)playWithString:(NSString *)string{

    

    if(string && string.length > 0){//需要判断传入得文字是否存在


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

        

        AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:string];//设置语音内容

        

        utterance.voice  = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//设置语言  这是简体中文

        

        utterance.rate   = self.rate//设置语速

        

        utterance.volume = self.volume//设置音量(0.0~1.0)默认为1.0

        

        utterance.pitchMultiplier    = self.pitchMultiplier//设置语调 (0.5-2.0)

        

        utterance.postUtteranceDelay = 1; //目的是让语音合成器播放下一语句前有短暂的暂停

        

        [player speakUtterance:utterance];

        

    }

}

/**

 

 *  设置播放的声音参数 如果选择默认请传入 -1.0

 

 *

 

 *  @param vloum          音量(0.0~1.0)默认为1.0

 

 *  @param rate            语速(0.0~1.0)

 

 *  @param pichMutiplier 语调 (0.5-2.0)

 

 */

- (void)setDefaultVloume:(float)vloum rate:(CGFloat)rate picchMutiplier:(CGFloat)pichMutiplier{

   

    self.rate  = rate;

    self.volume = vloum;

    self.pitchMultiplier = pichMutiplier;

    

    if (rate == -1.0) {

        self.rate = 1;

    }

    

    if (vloum == -1.0) {

        self.volume = 1;

    }

    

    if (pichMutiplier == -1.0) {

        self.pitchMultiplier = 1;

    }

}


@end


使用方法:

//使用方法举例 导入头文件后,用一下方法即可实现

    StrinToVoiceModel *palyer = [StrinToVoiceModel playInit];

    [palyer setDefaultVloume:-1.0 rate:0.4 picchMutiplier:-1.0];

    [palyer playWithString:@"我是赵小二"];


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值