跳转到主要内容

版本 1.2.0

新功能

  • 智能闹钟:通过 SmartAlarmConfig 配置唤醒时段,并通过新增的 smartAlarmStream: AsyncStream<SmartAlarmEvent> 观察闹钟生命周期事件。事件类型为 .armed.triggered(reason),触发原因包括 .optimalWakeUp.userInteraction.windowEnd。智能闹钟受 smartAlarm 功能限制,仅在主声道上支持。
  • 立体声声道分离:新增 ChannelSeparationConfig,控制立体声音频声道如何分配到分析声道,内置预设为 .bedSideMics.centeredMicArray.detectionStrengthOnly
  • 可配置的音频输入:新增 AudioInputConfig,在通过 createLiveDataSource(audioConfig:) 创建实时数据源时选择音频格式(单声道/立体声)和首选输入设备。
  • 睡眠评分:使用 SleepScoring.compute(result:history:dateOfBirth:chronoType:) 计算单晚的睡眠评分,它返回一个 SleepScore,包含 totaldurationqualityroutine 子评分(每项均为 0.0–1.0)。通过 AnalysisResult.toSleepScoreHistoryEntry() 从已完成的结果构建历史记录条目,并通过 SleepScoring.identifyChronoType(history:) 推导用户的 ChronoType
  • 扩展音频事件:新增 extendedAudioEvents 功能标志,公开标准集之外的额外 EventType 值。EventType.standardTypesEventType.extendedTypes 对可用集合进行分组。
  • 结果中的实时睡眠分期AnalysisResult 现在包含 realTimeSleepStageIntervals,即会话期间实时发出的睡眠分期(与会话结束后的 sleepStageIntervals 并存)。

API 变更

  • 支持声道的启动方法现在为 startMultiChannelAnalysis(channel:config:at:smartAlarmConfig:tag:),并接受 smartAlarmConfig: 参数。
  • stopAnalysis(channel:) 现在为 stopAnalysis(sessionId:),通过会话的 UUID 停止该会话。
  • resumeAnalysis() 现在返回 [ResumedSession](每个恢复的会话包含会话 ID、声道和智能闹钟配置),不再是 [AnalysisChannel: UUID]
  • initialize() 中新增 forceTokenRefresh: Bool 参数,即使存在缓存令牌也可强制重新获取令牌。
  • startAnalysis(...)startDataSource(...)resumeAnalysis(...) 中新增 channelSeparationConfig: ChannelSeparationConfig 参数。
  • AudioEventListener.onAudioAnalysisBatchCompleted(...) 现在接收 audioProbability: [EventType: Float],即每批次中每种事件类型的概率。rms: [Float] 参数已替换为 dbSpl: [Float],提供以 dB SPL 表示的 A 计权声音音量。
  • EventEndedInfo 现在包含 eventType: EventType 属性。
  • AnalysisResult 现在包含 timeZone: TimeZone(会话开始时捕获)和 realTimeSleepStageIntervals: [SleepStageInterval]
  • 流访问器(eventStreambreathingRateStreamerrorStreamsleepStageStreamaudioHealthStreamstateStream)和 currentState 现在为 asyncget async)。
  • SleepCycleSdkError.sessionAlreadyRunning 重命名为 .channelAlreadyRunning,并新增 .featureNotEnabled(_:)
  • 新增 SleepCycleSdk.version,返回 SDK 版本字符串。

版本 1.1.0

新功能

  • 多声道分析:使用立体声音频同时分析两个声道。新增 startDataSource(using:eventListeners:) / stopDataSource() 方法,将数据源生命周期与会话生命周期分离;通过 startAnalysis(channel:config:at:tag:) 在各声道上分别启动会话,通过 stopAnalysis(channel:at:) 单独停止某个会话。
  • 音频运行状况监测:新增 audioHealthStream: AsyncStream<AudioHealthUpdate>,实时发出音频输入运行状况的变化(.healthy.flatline.missingInput)。分析结果中包含 AudioStatisticsAudioHealthInterval
  • 所有公共类型上的会话 IDEventBreathingRateSleepStageIntervalAudioClipAudioHealthUpdate 现在都包含 sessionId: UUID 属性,用于标识它们所属的会话。

API 变更

  • startAnalysis() 现在返回一个标识会话的 UUID
  • startAnalysis() 中新增 tag: String? 参数,用于为会话打标签。
  • AudioEventListener.onAudioAnalysisBatchCompleted() 现在包含 sessionId: UUID 参数。
  • AnalysisResult 现在包含 sleepStageIntervalsaudioStatisticssessionId 属性。
  • SleepAnalysisFeatures 中新增 multiChannelAnalysis