TTS入门--ios

一.基本常识

TTS(Text To Speech),语音合成手艺,是指把原本的文本信息转换成能够发音的语音旌旗灯号,在GPS导航等需要人机交互斗劲多的场所经常会用到。 iPhone系统自己没有供给TTS引擎,可是可以使用外部数据的体例使iPhone具有TTS功能。

二.具体介绍

今朝找到两种可以在iPhone上免费使用TTS的体例,一种是使用Acapela为iPhone开发的工具包,另一种是使用Google Translate的TTS接口。

以下介绍Google Translate的TTS接口:

获取音频并保存起来:

1NSString *urlString = [@"http://translate.google.com/translate_tts?tl=en&q=" stringByAppendingString:@"I+am+techcrunch"]; 2NSURL *url = [[NSURL alloc] initWithString:[urlString stringByReplacingOccurrencesOfString:@" " withString:@"+"]]; 3//获得返回的mp3文件,格式为NSdata 4NSData *voiceData = [[NSData alloc] initWithContentsOfURL:url]; 5[NSThread sleepForTimeInterval:3.0];//等待3秒获取google词库的发音数据 6if(voiceData) 7{ 8 NSLog(@"已经1次性获取到voice"); 9} 10else 11{ 12 int k=0; 13 while(k<10&&!voiceData)//若voiceData为空,则继续获取voiceData5次,防止单词没有读音 14 { 15 NSString *urlString = [@"http://translate.google.com/translate_tts?tl=en&q=" stringByAppendingString:@"I+love+techcrunch "]; 16 NSURL *url = [[NSURL alloc] initWithString:[urlString stringByReplacingOccurrencesOfString:@" " withString:@"+"]]; 17 //获得返回的mp3文件,格式为NSdata 18 voiceData = [[NSData alloc] initWithContentsOfURL:url]; 19 [NSThread sleepForTimeInterval:5.0]; 20 k++; 21 } 22 if(voiceData){NSLog(@"第%d次获取到voice",k+1);} 23} 24NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 25NSString *documentsDirectory = [paths objectAtIndex:0]; 26NSLog(@"%@",documentsDirectory); 27[voiceData writeToFile:[documentsDirectory stringByAppendingPathComponent:@"test2"] atomically:YES]; 28[voiceData release];

读取音频并播放:

1NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 2NSString *documentsDirectory = [paths objectAtIndex:0]; 3NSString* appFile =[documentsDirectory stringByAppendingPathComponent:@"test2"]; 4 5NSURL* filePath = [NSURL fileURLWithPath:appFile isDirectory:NO]; 6_wordData = [NSData dataWithContentsOfURL:filePath];; 7 8//保证静音模式下也能播放 9AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 10NSError *error = nil; 11BOOL b = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error]; 12b = [audioSession setActive:YES error:&error]; 13 14//播放 15_avAudioPlayer = [[AVAudioPlayer alloc] initWithData:_wordData error:nil]; 16_avAudioPlayer.delegate = self; 17_avAudioPlayer.volume = 1.0f; 18[_avAudioPlayer prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列 19[_avAudioPlayer play];
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )