- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要快速开发一个 iOS 应用程序来检测用户对麦克风的打击。这必须是一场挑战游戏,两名玩家必须依次向 iPhone 麦克风吹气。分贝值应以米或公里为单位进行测量和转换,以便我确定优胜者。 “吹得更远”的玩家(玩家 1:50 公里,玩家 2:70 公里)获胜。
这是一个可能的实现吗?
我在 swift 中有这段代码,但我不知道如何继续:
import Foundation
import UIKit
import AVFoundation
import CoreAudio
class ViewController: UIViewController {
// @IBOutlet weak var mainImage: UIImageView!
var recorder: AVAudioRecorder!
var levelTimer = NSTimer()
var lowPassResults: Double = 0.0
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL.fileURLWithPath("dev/null")
//numbers are automatically wrapped into NSNumber objects, so I simplified that to [NSString : NSNumber]
var settings : [NSString : NSNumber] = [AVSampleRateKey: 44100.0, AVFormatIDKey: kAudioFormatAppleLossless, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.Max.rawValue]
var error: NSError?
// mainImage?.image = UIImage(named: "flyForReal.png");
recorder = AVAudioRecorder(URL:url, settings:settings, error:&error)
if((recorder) != nil){
recorder.prepareToRecord()
recorder.meteringEnabled = true
recorder.record()
levelTimer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("levelTimerCallback"), userInfo: nil, repeats: true)
}
else{
NSLog("%@", "Error");
}
}
func levelTimerCallback(timer:NSTimer) {
recorder.updateMeters()
let ALPHA: Double = 0.05
var peakPowerForChannel = pow(Double(10), (0.05 * Double(recorder.peakPowerForChannel(0))))
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
if(lowPassResults > 0.95){
NSLog("@Mic blow detected");
}
NSLog("@Average input: %f Peak input: %f Low pass results: %f", recorder.averagePowerForChannel(0), recorder.peakPowerForChannel(0), lowPassResults);
}
}
提前致谢!
最佳答案
我将 Andrew 的回答转换为 Swift 4:
import Foundation
import UIKit
import AVFoundation
import CoreAudio
class ViewController: UIViewController {
var recorder: AVAudioRecorder!
var levelTimer = Timer()
let LEVEL_THRESHOLD: Float = -10.0
override func viewDidLoad() {
super.viewDidLoad()
let documents = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
let url = documents.appendingPathComponent("record.caf")
let recordSettings: [String: Any] = [
AVFormatIDKey: kAudioFormatAppleIMA4,
AVSampleRateKey: 44100.0,
AVNumberOfChannelsKey: 2,
AVEncoderBitRateKey: 12800,
AVLinearPCMBitDepthKey: 16,
AVEncoderAudioQualityKey: AVAudioQuality.max.rawValue
]
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setActive(true)
try recorder = AVAudioRecorder(url:url, settings: recordSettings)
} catch {
return
}
recorder.prepareToRecord()
recorder.isMeteringEnabled = true
recorder.record()
levelTimer = Timer.scheduledTimer(timeInterval: 0.02, target: self, selector: #selector(levelTimerCallback), userInfo: nil, repeats: true)
}
@objc func levelTimerCallback() {
recorder.updateMeters()
let level = recorder.averagePower(forChannel: 0)
let isLoud = level > LEVEL_THRESHOLD
// do whatever you want with isLoud
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
关于iOS - 检测 Blow into Mic 并转换结果! ( swift ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230854/
以下流体模拟是对paper by Stam的翻译.真正可怕的事情发生了。每次程序以较低的 DIFF=0.01 运行时,值开始时很小,然后迅速扩大,或“膨胀”。我仔细检查了数学例程。由于代码以一个 0.
我正在编写一些代码来获得生成的线程以从 C++ 调用静态 Java 方法。 如果放置在来自 Java 的 native 调用中,调用该方法的位可以正常工作,但不能来自带有附加 JNIEnv 的线程。
我需要快速开发一个 iOS 应用程序来检测用户对麦克风的打击。这必须是一场挑战游戏,两名玩家必须依次向 iPhone 麦克风吹气。分贝值应以米或公里为单位进行测量和转换,以便我确定优胜者。 “吹得更远
众所周知,Facebook 文档并不是最好的。它内部不一致,不断变化,充满了损坏的链接,并且经常过时或完全错误。我搜索了又搜索,似乎找不到一个非常简单问题的答案:您能否获取开放图形对象实例的见解数据,
我尝试了几个版本的简单谓词,该谓词从超逻辑宇宙中提取随机值并将它们放入列表中。我假设带有累加器的版本是 tail-call optimized ,因为在递归调用之后什么也没有发生,所以存在优化的路径,
已开发的新应用程序大量使用 Web 服务。我们开始定期遇到内存不足异常(随着使用量的增加)。在查看内存转储时,我注意到有大量相同大小的 byte[]。查看这些 byte[] 的句柄,我注意到它们被 S
MPMoviePlayerController 播放器在按下完成按钮后永久隐藏播放器控件。 我有一个带有 moviePlayer.controlStyle = MPMovieControlStyleE
问题:使用有限差分迭代求解拉普拉斯方程 div2(u)=0。 边界条件:u(x,0)=1 u(x,1)=u(0,y)=u(1,y)=0 算法是: u[i,j]= 0.25 * (u[i,j-1] +
所以 Qt 在 windows 上是用/Zc:wchar_t- 编译的。这意味着 wchar_t 不是某些内部类型(我认为是 __wchar_t)的 typedef,而是 unsigned short
我尝试将 jpg-images 作为一长串图片框加载到表格布局面板中。图像列表应该可以平滑滚动,即没有闪烁或可见的模糊或抖动。大约有 300 张图片,每张图片的大小约为 150kb (600px x
在这一点上,我对高尔夫不是很熟悉,但一定有一种方法来配置错误处理。它不能总是在没有的时候就吓坏了;当你打字到一半的时候,你的SCSS,对吗?。我遗漏了什么?对此进行了研究,但似乎找不到答案。这真的很令
以下代码在 Chrome 和 Firefox 中都能正常工作。在 IE 9 中,附加选项,但文本始终为空白。 function populateDeveloperDropDownViaSkillPro
我是一名优秀的程序员,十分优秀!