簡體   English   中英

AWS Polly - 突出顯示特殊字符

[英]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 中表示。

您可以在此處閱讀官方文檔 - 字符串和字符

那里有很多有用的細節。 我想為您的用例強調以下內容 - 在此處輸入圖像描述

這也是它如何查找您的輸入 - 在此處輸入圖像描述

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

  1. 以您今天的方式解碼PollyVoiceSentence
  2. PollyVoiceSentence上創建一個擴展來解決這個字符計數問題。
  3. 迭代/考慮句子中的所有單詞,因為每個先前單詞的字符數現在影響所有后續單詞的開始。
  4. 而且你不能相信 json 提供的startend ,因為它顯然不適合 Swift 的字符串 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM