javascript - 是否可以将html文本作为文本输入创建到语音文本字段中?

  显示原文与译文双语对照的内容
0 0

我使用 http://zaldzbugz.posterous.com/how-to-search-a-string-inside-uiwebview 中的javascript程序来解析html页面和以下方法


-(void)speakText:(NSString *)text
{


 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"UIWebViewSearch" ofType:@"js" inDirectory:@""];
 NSData *fileData = [NSData dataWithContentsOfFile:filePath];
 NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
 text =jsString;
 NSMutableString *cleanString;
 cleanString = [NSMutableString stringWithString:@""];
 if([text length]> 1)
 {
 int x = 0;
 while (x <[text length])
 {
 unichar ch = [text characterAtIndex:x];
 [cleanString appendFormat:@"%c", ch];
 x++;
 }
 }
 if(cleanString == nil)
 {//string is empty
 cleanString = [NSMutableString stringWithString:@""];
 }
 sound = flite_text_to_wave([cleanString UTF8String], voice);
 NSArray *filePaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *recordingDirectory = [filePaths objectAtIndex: 0];
//Pick a file name
 NSString *tempFilePath = [NSString stringWithFormat: @"%@/%s", recordingDirectory,"temp.wav"];
//save wave to disk
 char *path; 
 path = (char*)[tempFilePath UTF8String];
 cst_wave_save_riff(sound, path);
//Play the sound back.
 NSError *err;
 [audioPlayer stop];
 audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:tempFilePath] error:&err];
 [audioPlayer setDelegate:self];
//[audioPlayer prepareToPlay];
 [audioPlayer play];
//Remove file
 [[NSFileManager defaultManager] removeItemAtPath:tempFilePath error:nil];
 delete_wave(sound);

}

将文本转换为语音字符串输入。我听到文本字段中的一些编码格式而不是html文本( 当我做 NSLog(jsstring)的时候,我得到了整个javascript代码,并且在语音输出中) 。 因为我的时间很短,请帮我。 请提前致谢。

时间: 原作者:

0 0

代码将JavaScript文件转换为语音,在代码中无需加载HTML文件时,就可以更改文本。 我还怀疑你引用的JavaScript程序实际上可以帮助你实现这一点,对于你已经知道的页面中的文本。

我建议你查看 NSScanner ( 。Apple文档 ),你可以使用它来过滤相关位的HTML文件,而不用使用外部JavaScript程序。 虽然需要一些技巧。 如果你有完美的HTML,NSXMLParser 将是一个简单的解决方案,但我不确定你是否可以依赖它。 也许已经有了第三方框架的解决方案,但不幸的是我不能在这方面给你建议。 堆栈交换的这个问题可能也有帮助: 只从 Objective C 中的html内容提取文本。

不管HTML解析,代码中都有一些奇怪的事情发生。 例如,为什么要将 (NSString *) text 作为 speakText: 方法的参数,当你以后覆盖四行而不触摸它时为什么? 为什么把 text的笨拙的character-by-character复制到 cleanString

原作者:
...