FDSoundActivatedRecorder
在用户说话时开始录音。您只需告诉我们何时开始监听。然后我们等待可听见的噪音并开始录音。这主要用于用户语音输入和“现在开始说话”提示。
功能
- 当检测到声音时,您可以开始录音,或者立即开始
- 当用户完成说话时,声音停止录音
- 支持 ARC 和 iOS 5+
用法
首先,通过将 pod 'FDSoundActivatedRecorder', '~> 1.0.0'
添加到 Podfile 中进行安装。
使用以下代码导入项目:
import FDSoundActivatedRecorder
然后开始监听:
self.recorder = FDSoundActivatedRecorder()
self.recorder.delegate = self
self.recorder.startListening()
在项目中提供了一个完整的实现示例。
如果您的应用在应用商店,非常感谢您将您的应用添加到 https://cocoacontrols.cn/controls/fdsoundactivatedrecorder 下的“使用此控件的应用程序”和“我使用此控件”。
完整API
完整的API,从FDSoundActivatedRecorder.swift中复制如下
@objc protocol FDSoundActivatedRecorderDelegate {
/// A recording was triggered or manually started
func soundActivatedRecorderDidStartRecording(recorder: FDSoundActivatedRecorder)
/// No recording has started or been completed after listening for `TOTAL_TIMEOUT_SECONDS`
func soundActivatedRecorderDidTimeOut(recorder: FDSoundActivatedRecorder)
/// The recording and/or listening ended and no recording was captured
func soundActivatedRecorderDidAbort(recorder: FDSoundActivatedRecorder)
/// A recording was successfully captured
func soundActivatedRecorderDidFinishRecording(recorder: FDSoundActivatedRecorder, andSaved file: NSURL)
}
class FDSoundActivatedRecorder : NSObject {
/// A log-scale reading between 0.0 (silent) and 1.0 (loud), nil if not recording
dynamic var microphoneLevel: Double
/// Receiver for status updates
weak var delegate: FDSoundActivatedRecorderDelegate?
/// Listen and start recording when triggered
func startListening()
/// Go back in time and start recording `RISE_TRIGGER_INTERVALS` ago
func startRecording()
/// End the recording and send any processed & saved file to `delegate`
func stopAndSaveRecording()
/// End any recording or listening and discard any recorded file
func abort()
/// This is a PRIVATE method but it must be public because a selector is used in NSTimer (Swift bug)
func interval()
}
技术讨论
该库针对在安静或嘈杂环境中使用Apple零售iOS设备进行人声检测进行了调整。欢迎您调整该程序的音频检测常量以适应特殊需求。以下是关于该算法如何工作的详细技术描述,来自FDSoundActivatedRecorder.swift
。
V Recording
O /-----------\
L / \Fall
U /Rise \
M / \
E -------- --------
Listening Done
- 我们每隔
INTERVAL
监听并保存音频电平 - 当多个电平超过近期移动平均值的阈值时,我们开始记录
- (超过阈值的电平不包括在移动平均值中)
- 当多个电平低于近期移动平均值的阈值时,我们停止记录
- (低于阈值的电平不包括在移动平均值中)
赞助
(在此处插入手册的LOGO
]
请联系[email protected]讨论在上方添加您的公司标志并支持此项目。