gpt4 book ai didi

swift - AWS Polly - 突出显示特殊字符

转载 作者:行者123 更新时间:2023-12-04 11:39:30 27 4
gpt4 key购买 nike

我正在使用 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 中表示。
你可以在这里阅读官方文档 -
String and Characters
那里有大量有用的细节。我想为您的用例强调以下内容 -
enter image description here
这也是它寻找您输入的方式 -
enter image description here
在你的情况下你可以做的是 -

  • 解码PollyVoiceSentence你今天的样子。
  • PollyVoiceSentence 上创建扩展来解决这个字符计数问题。
  • 迭代/计算句子中的所有单词,因为每个前一个单词的字符计数现在会影响所有后续单词的开始。
  • 你不能相信 start & end由 json 提供,因为它显然不适合 Swift 的 String API。
  • 关于swift - AWS Polly - 突出显示特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67900626/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com