FDSoundActivatedRecorder 3.1.0

FDSoundActivatedRecorder 3.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最近发布2019年10月
SPM支持 SPM

William Entriken 维护。




FDSoundActivatedRecorder

CI Status Version License Platform Carthage compatible Readme Score

在用户说话时开始录音。您只需告诉我们何时开始监听。然后我们等待可听见的噪音并开始录音。这主要用于用户语音输入和“现在开始说话”提示。

🍕虚拟小费罐: https://amazon.com/hz/wishlist/ls/EE78A23EEGQB

功能

  • 当检测到声音时,您可以开始录音,或者立即开始
  • 当用户完成说话时,声音停止录音
  • 支持 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]讨论在上方添加您的公司标志并支持此项目。