【发布时间】:2021-06-09 08:44:59
【问题描述】:
我正在使用 AWS Polly 服务进行文本转语音。但如果文本包含一些特殊字符,则会返回错误的开始和结束数字。
例如,如果文本是:“Böylelikle”,则返回:{“time”:6,"type":"word","start":0,"end":11,"value":"Böylelikle" }
但它应该从 0 开始,到 10 结束。
我搜索了 AWS 文档,他们说的是开始值和结束值,偏移量是字节而不是字符。
我的问题是如何将此字节值转换为字符。
我的代码是:
builder.continueOnSuccessWith { (awsTask: AWSTask<NSURL>) -> Any? in
if builder.error == nil {
if let url = awsTask.result {
do {
let txtData = try Data(contentsOf: url as URL)
if let txtString = String(data: txtData, encoding: .utf8) {
let lines = txtString.components(separatedBy: .newlines)
for line in lines {
let jsonData = Data(line.utf8)
let pollyVoiceSentence = try JSONDecoder().decode(PollyVoiceSentence.self, from: jsonData)
voiceSentences.append(pollyVoiceSentence)
}
}
} catch {
print("Could not parse TXT file")
}
}
} else {
print("ParseJSON: \(builder.error!)")
}
completionHandler(voiceSentences)
return nil
}
并突出显示单词:
let start = pollyVoiceSentence.start
var end = pollyVoiceSentence.end
let voiceRange = NSRange(location: start, length: end - start)
print("RANGE: \(voiceRange) - Word: \(pollyVoiceSentence.value)")
谢谢。
【问题讨论】:
-
您好 Berker,下面的答案是否解决了您的问题?
-
谢谢@TarunTyagi,我已经开始阅读这个文档了。
标签: swift string amazon-web-services character-encoding amazon-polly