[英]AWS Polly - Highlighting special characters
我正在使用 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)")
謝謝。
看起來他們正在為您提供String.utf8.count
這個詞。 Swift 支持 Unicode 並且並非所有字符都可以在 UTF8 中表示。
您可以在此處閱讀官方文檔 - 字符串和字符
在你的情況下你可以做的是 -
PollyVoiceSentence
。PollyVoiceSentence
上創建一個擴展來解決這個字符計數問題。start
和end
,因為它顯然不適合 Swift 的字符串 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.