前提・実現したいこと
音の識別するアプリを制作しています。マイクで音を認識して信頼度のスコアが0〜20で常に変化しながら出力され続けています。閾値(今回の場合は信頼度19以上)で1回処理を実行したいと考えております。
該当のソースコード
swift
1static func generateMeter(confidence: Double) -> some View { 2 let numBars = 20 3 let barColors = generateConfidenceMeterBarColors(numBars: numBars) 4 let confidencePerBar = 1.0 / Double(numBars) 5 let barSpacing = CGFloat(2.0) 6 let barDimensions = (CGFloat(15.0), CGFloat(2.0)) 7 let numLitBars = Int(confidence / confidencePerBar) 8 let litBarOpacities = [Double](repeating: 1.0, count: numLitBars) 9 let unlitBarOpacities = [Double](repeating: 0.1, count: numBars - numLitBars) 10 let barOpacities = litBarOpacities + unlitBarOpacities 11 12 13 if numLitBars >= 19{print("検知")} //numLitBarsが信頼度と同じ値 14
出力画面
//(↑ここまで非検知状態 numLitBars=0) 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 検知 //numLitBars=19 //(↓ここから非検知状態 numLitBars=0)
問題
if文を使って処理が実行可能なところまでは理解できたのですが、このままだと信頼度がセンサーの出力間隔上、認識したタイミングで numLitBars=19 が連続して何回か出力され、そのために検知が同じ回数printされてします。これを連続する中で一回だけ処理を実行し、何秒かたったらまた処理を受け付けるみたいにしたいと思っています。(日本語が変ですみません…)
補足情報(FW/ツールのバージョンなど)
Xcode13 / ios15 / swift
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/27 01:43