文本转语音

这篇博客介绍了如何在iOS平台上实现文本转语音的功能,包括需要导入的系统框架和头文件,以及AVSpeechSynthesizer支持的多种语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cnblogs.com/qingjoin/p/3160945.html


首先导入系统框架
这里写图片描述

导入头文件和代理

#import <AVFoundation/AVSpeechSynthesis.h>
<AVSpeechSynthesizerDelegate>

然后

 AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Hello World"];  //需要转换的文本
    //设置语言类别(不能被识别,返回值为nil)
    AVSpeechSynthesisVoice *voiceType = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//"zh-CN" 普通话
    utterance.voice = voiceType;
   // 中文朗诵速度:0.1还能够接受
   // 英文朗诵速度:0.3还可以
    utterance.rate *= 0.1;//语速
    AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init];
    [av speakUtterance:utterance];

avspeech支持的语言种类包括:

"[AVSpeechSynthesisVoice 0x978a0b0]Language: th-TH",
"[AVSpeechSynthesisVoice 0x977a450]Language: pt-BR",
"[AVSpeechSynthesisVoice 0x977a480]Language: sk-SK",
"[AVSpeechSynthesisVoice 0x978ad50]Language: fr-CA",
"[AVSpeechSynthesisVoice 0x978ada0]Language: ro-RO",
"[AVSpeechSynthesisVoice 0x97823f0]Language: no-NO",
"[AVSpeechSynthesisVoice 0x978e7b0]Language: fi-FI",
"[AVSpeechSynthesisVoice 0x978af50]Language: pl-PL",
"[AVSpeechSynthesisVoice 0x978afa0]Language: de-DE",
"[AVSpeechSynthesisVoice 0x978e390] Language:nl-NL",
"[AVSpeechSynthesisVoice 0x978b030]Language: id-ID",
"[AVSpeechSynthesisVoice 0x978b080]Language: tr-TR",
"[AVSpeechSynthesisVoice 0x978b0d0]Language: it-IT",
"[AVSpeechSynthesisVoice 0x978b120]Language: pt-PT",
"[AVSpeechSynthesisVoice 0x978b170]Language: fr-FR",
"[AVSpeechSynthesisVoice 0x978b1c0]Language: ru-RU",
"[AVSpeechSynthesisVoice0x978b210]Language: es-MX",
"[AVSpeechSynthesisVoice 0x978b2d0]Language: zh-HK",
"[AVSpeechSynthesisVoice 0x978b320]Language: sv-SE",
"[AVSpeechSynthesisVoice 0x978b010]Language: hu-HU",
"[AVSpeechSynthesisVoice 0x978b440]Language: zh-TW",
"[AVSpeechSynthesisVoice 0x978b490]Language: es-ES",
"[AVSpeechSynthesisVoice 0x978b4e0]Language: zh-CN",
"[AVSpeechSynthesisVoice 0x978b530]Language: nl-BE",
"[AVSpeechSynthesisVoice 0x978b580]Language: en-GB",
"[AVSpeechSynthesisVoice 0x978b5d0]Language: ar-SA",
"[AVSpeechSynthesisVoice 0x978b620]Language: ko-KR",
"[AVSpeechSynthesisVoice 0x978b670]Language: cs-CZ",
"[AVSpeechSynthesisVoice 0x978b6c0]Language: en-ZA",
"[AVSpeechSynthesisVoice 0x978aed0]Language: en-AU",
"[AVSpeechSynthesisVoice 0x978af20]Language: da-DK",
"[AVSpeechSynthesisVoice 0x978b810]Language: en-US",
"[AVSpeechSynthesisVoice 0x978b860]Language: en-IE",
"[AVSpeechSynthesisVoice 0x978b8b0]Language: hi-IN",
"[AVSpeechSynthesisVoice 0x978b900]Language: el-GR",
"[AVSpeechSynthesisVoice 0x978b950]Language: ja-JP" )

代码片:

#import "ViewController.h"
#import <AVFoundation/AVSpeechSynthesis.h>
@interface ViewController ()<AVSpeechSynthesizerDelegate>
{
    UITextView *textView;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    textView = [[UITextView alloc] initWithFrame:CGRectMake(50, 100, 250, 100)];
    textView.layer.borderColor = [UIColor grayColor].CGColor;
    textView.layer.borderWidth = 1;
    textView.layer.cornerRadius = 6;
    textView.layer.masksToBounds = YES;
    [self.view addSubview:textView];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(100, 300, 100, 50);
    [button setTitle:@"转换" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
    button.layer.cornerRadius = 6;
    button.layer.masksToBounds = YES;
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    button.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:button];
}
-(void)buttonClick
{
    NSLog(@"文字 %@",textView.text);
    AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:textView.text];  //需要转换的文本
    //设置语言类别(不能被识别,返回值为nil)
    AVSpeechSynthesisVoice *voiceType = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];//"zh-CN" 普通话
    utterance.voice = voiceType;
   // 中文朗诵速度:0.1还能够接受
   // 英文朗诵速度:0.3还可以
    utterance.rate *= 0.1;//语速
    AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init];
    [av speakUtterance:utterance];
}
@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值