FDSoundActivatedRecorder

CI Status Version License Platform Carthage compatible Readme Score

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

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

特性

安装

使用 Swift Package Manager 将其添加到您的项目中。 在 Xcode 中,只需:File > Swift Packages > Add Package Dependency... 就完成了。 以下显示了传统项目的替代安装选项。

CocoaPods

如果您已经在使用 CocoaPods,只需将 'FDSoundActivatedRecorder' 添加到您的 Podfile,然后运行 pod install

Carthage

如果您已经在使用 Carthage,只需将其添加到您的 Cartfile

github "fulldecent/FDSoundActivatedRecorder" ~> 0.1

然后运行 carthage update 来构建框架,并将构建的 FDSoundActivatedRecorder 框架拖到您的 Xcode 项目中。

使用方法

首先,将 pod 'FDSoundActivatedRecorder', '~> 1.0.0' 添加到您的 Podfile 中进行安装。

使用以下命令导入项目

import FDSoundActivatedRecorder

然后使用以下命令开始监听

self.recorder = FDSoundActivatedRecorder()
self.recorder.delegate = self
self.recorder.startListening()

此项目中提供了完整的实现示例。

如果您的应用程序在 App Store 中,如果您能将您的应用程序添加到 https://cocoacontrols.cn/controls/fdsoundactivatedrecorder 中的“使用此控件的应用”和“我使用此控件”下,我将非常感谢。

常规录音机

如果您想将其用作常规录音机,而无需裁剪音频。

  1. 开始监听
self.recorder.startListening()
  1. 开始录音
self.recorder.startRecording()
  1. 最后,您可以使用以下方法停止录音
self.recorder.stopAndSaveRecording()

完整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 files
    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

赞助

[您的标志在这里]

请联系 github.com@phor.net 讨论添加您的公司徽标以上并支持本项目。