【问题标题】:AWS Polly - Highlighting special charactersAWS Polly - 突出显示特殊字符
【发布时间】: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


【解决方案1】:

看起来他们正在为您提供String.utf8.count 这个词。 Swift 支持 Unicode,并非所有字符都可以在 UTF8 中表示。

您可以在此处阅读官方文档 - String and Characters

那里有很多有用的细节。我想为您的用例强调以下内容 -

这也是它如何查找您的输入 -

在你的情况下你可以做的是 -

  1. 以今天的方式解码PollyVoiceSentence
  2. PollyVoiceSentence 上创建一个扩展来解决这个字符计数问题。
  3. 迭代/考虑句子中的所有单词,因为之前每个单词的字符数现在会影响所有后续单词的开始。
  4. 而且您不能相信 json 提供的 startend,因为它显然不适合 Swift 的 String API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多