@siteed/expo-audio-studio 2.18.6 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +13 -297
  2. package/index.d.ts +1 -0
  3. package/index.js +1 -0
  4. package/package.json +7 -136
  5. package/CHANGELOG.md +0 -501
  6. package/LICENSE +0 -21
  7. package/android/build.gradle +0 -129
  8. package/android/src/androidTest/assets/chorus.wav +0 -0
  9. package/android/src/androidTest/assets/jfk.wav +0 -0
  10. package/android/src/androidTest/assets/osr_us_000_0010_8k.wav +0 -0
  11. package/android/src/androidTest/assets/recorder_hello_world.wav +0 -0
  12. package/android/src/androidTest/java/net/siteed/audiostream/AudioProcessorInstrumentedTest.kt +0 -197
  13. package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderInstrumentedTest.kt +0 -541
  14. package/android/src/androidTest/java/net/siteed/audiostream/AudioRecorderPerformanceInstrumentedTest.kt +0 -234
  15. package/android/src/androidTest/java/net/siteed/audiostream/integration/AudioFocusStrategyIntegrationTest.kt +0 -332
  16. package/android/src/androidTest/java/net/siteed/audiostream/integration/BufferDurationIntegrationTest.kt +0 -324
  17. package/android/src/androidTest/java/net/siteed/audiostream/integration/CompressedOnlyOutputTest.kt +0 -253
  18. package/android/src/androidTest/java/net/siteed/audiostream/integration/DeviceDisconnectionFallbackTest.kt +0 -218
  19. package/android/src/androidTest/java/net/siteed/audiostream/integration/EventEmissionIntervalTest.kt +0 -120
  20. package/android/src/androidTest/java/net/siteed/audiostream/integration/M4aFormatTest.kt +0 -345
  21. package/android/src/androidTest/java/net/siteed/audiostream/integration/OutputControlIntegrationTest.kt +0 -340
  22. package/android/src/androidTest/java/net/siteed/audiostream/integration/PcmStreamingDurationTest.kt +0 -252
  23. package/android/src/androidTest/java/net/siteed/audiostream/integration/README.md +0 -95
  24. package/android/src/androidTest/java/net/siteed/audiostream/integration/run_integration_tests.sh +0 -43
  25. package/android/src/main/AndroidManifest.xml +0 -30
  26. package/android/src/main/java/net/siteed/audiostream/AudioAnalysisData.kt +0 -188
  27. package/android/src/main/java/net/siteed/audiostream/AudioDataEncoder.kt +0 -9
  28. package/android/src/main/java/net/siteed/audiostream/AudioDeviceManager.kt +0 -1741
  29. package/android/src/main/java/net/siteed/audiostream/AudioFileHandler.kt +0 -136
  30. package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +0 -354
  31. package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +0 -439
  32. package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +0 -2237
  33. package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +0 -2141
  34. package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +0 -167
  35. package/android/src/main/java/net/siteed/audiostream/AudioTrimmer.kt +0 -1099
  36. package/android/src/main/java/net/siteed/audiostream/Constants.kt +0 -37
  37. package/android/src/main/java/net/siteed/audiostream/EventSender.kt +0 -7
  38. package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +0 -1113
  39. package/android/src/main/java/net/siteed/audiostream/FFT.kt +0 -99
  40. package/android/src/main/java/net/siteed/audiostream/Features.kt +0 -98
  41. package/android/src/main/java/net/siteed/audiostream/LogUtils.kt +0 -93
  42. package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +0 -72
  43. package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +0 -68
  44. package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +0 -59
  45. package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +0 -257
  46. package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +0 -19
  47. package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +0 -159
  48. package/android/src/main/res/drawable/ic_default_action_icon.xml +0 -16
  49. package/android/src/main/res/drawable/ic_microphone.xml +0 -13
  50. package/android/src/main/res/drawable/ic_pause.xml +0 -10
  51. package/android/src/main/res/drawable/ic_play.xml +0 -10
  52. package/android/src/main/res/drawable/ic_stop.xml +0 -10
  53. package/android/src/main/res/layout/notification_recording.xml +0 -37
  54. package/android/src/test/java/net/siteed/audiostream/AudioFileHandlerTest.kt +0 -279
  55. package/android/src/test/java/net/siteed/audiostream/AudioFocusStrategyTest.kt +0 -249
  56. package/android/src/test/java/net/siteed/audiostream/AudioFormatTest.kt +0 -151
  57. package/android/src/test/java/net/siteed/audiostream/AudioFormatUtilsTest.kt +0 -273
  58. package/android/src/test/java/net/siteed/audiostream/DeviceDisconnectionFallbackUnitTest.kt +0 -140
  59. package/android/src/test/resources/chorus.wav +0 -0
  60. package/android/src/test/resources/generate_test_audio.py +0 -94
  61. package/android/src/test/resources/jfk.wav +0 -0
  62. package/android/src/test/resources/osr_us_000_0010_8k.wav +0 -0
  63. package/android/src/test/resources/recorder_hello_world.wav +0 -0
  64. package/app.plugin.js +0 -3
  65. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js +0 -4
  66. package/build/cjs/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  67. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js +0 -210
  68. package/build/cjs/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  69. package/build/cjs/AudioAnalysis/extractAudioData.js +0 -21
  70. package/build/cjs/AudioAnalysis/extractAudioData.js.map +0 -1
  71. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js +0 -92
  72. package/build/cjs/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  73. package/build/cjs/AudioAnalysis/extractPreview.js +0 -28
  74. package/build/cjs/AudioAnalysis/extractPreview.js.map +0 -1
  75. package/build/cjs/AudioAnalysis/extractWaveform.js +0 -18
  76. package/build/cjs/AudioAnalysis/extractWaveform.js.map +0 -1
  77. package/build/cjs/AudioDeviceManager.js +0 -689
  78. package/build/cjs/AudioDeviceManager.js.map +0 -1
  79. package/build/cjs/AudioRecorder.provider.js +0 -78
  80. package/build/cjs/AudioRecorder.provider.js.map +0 -1
  81. package/build/cjs/ExpoAudioStream.native.js +0 -8
  82. package/build/cjs/ExpoAudioStream.native.js.map +0 -1
  83. package/build/cjs/ExpoAudioStream.types.js +0 -11
  84. package/build/cjs/ExpoAudioStream.types.js.map +0 -1
  85. package/build/cjs/ExpoAudioStream.web.js +0 -708
  86. package/build/cjs/ExpoAudioStream.web.js.map +0 -1
  87. package/build/cjs/ExpoAudioStreamModule.js +0 -718
  88. package/build/cjs/ExpoAudioStreamModule.js.map +0 -1
  89. package/build/cjs/WebRecorder.web.js +0 -777
  90. package/build/cjs/WebRecorder.web.js.map +0 -1
  91. package/build/cjs/constants/platformLimitations.js +0 -99
  92. package/build/cjs/constants/platformLimitations.js.map +0 -1
  93. package/build/cjs/constants.js +0 -17
  94. package/build/cjs/constants.js.map +0 -1
  95. package/build/cjs/events.js +0 -29
  96. package/build/cjs/events.js.map +0 -1
  97. package/build/cjs/hooks/useAudioDevices.js +0 -179
  98. package/build/cjs/hooks/useAudioDevices.js.map +0 -1
  99. package/build/cjs/index.js +0 -58
  100. package/build/cjs/index.js.map +0 -1
  101. package/build/cjs/trimAudio.js +0 -76
  102. package/build/cjs/trimAudio.js.map +0 -1
  103. package/build/cjs/useAudioRecorder.js +0 -518
  104. package/build/cjs/useAudioRecorder.js.map +0 -1
  105. package/build/cjs/utils/BlobFix.js +0 -502
  106. package/build/cjs/utils/BlobFix.js.map +0 -1
  107. package/build/cjs/utils/audioProcessing.js +0 -136
  108. package/build/cjs/utils/audioProcessing.js.map +0 -1
  109. package/build/cjs/utils/cleanNativeOptions.js +0 -22
  110. package/build/cjs/utils/cleanNativeOptions.js.map +0 -1
  111. package/build/cjs/utils/concatenateBuffers.js +0 -25
  112. package/build/cjs/utils/concatenateBuffers.js.map +0 -1
  113. package/build/cjs/utils/convertPCMToFloat32.js +0 -124
  114. package/build/cjs/utils/convertPCMToFloat32.js.map +0 -1
  115. package/build/cjs/utils/crc32.js +0 -52
  116. package/build/cjs/utils/crc32.js.map +0 -1
  117. package/build/cjs/utils/encodingToBitDepth.js +0 -17
  118. package/build/cjs/utils/encodingToBitDepth.js.map +0 -1
  119. package/build/cjs/utils/getWavFileInfo.js +0 -96
  120. package/build/cjs/utils/getWavFileInfo.js.map +0 -1
  121. package/build/cjs/utils/writeWavHeader.js +0 -88
  122. package/build/cjs/utils/writeWavHeader.js.map +0 -1
  123. package/build/cjs/workers/InlineFeaturesExtractor.web.js +0 -859
  124. package/build/cjs/workers/InlineFeaturesExtractor.web.js.map +0 -1
  125. package/build/cjs/workers/inlineAudioWebWorker.web.js +0 -184
  126. package/build/cjs/workers/inlineAudioWebWorker.web.js.map +0 -1
  127. package/build/esm/AudioAnalysis/AudioAnalysis.types.js +0 -3
  128. package/build/esm/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  129. package/build/esm/AudioAnalysis/extractAudioAnalysis.js +0 -202
  130. package/build/esm/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  131. package/build/esm/AudioAnalysis/extractAudioData.js +0 -14
  132. package/build/esm/AudioAnalysis/extractAudioData.js.map +0 -1
  133. package/build/esm/AudioAnalysis/extractMelSpectrogram.js +0 -89
  134. package/build/esm/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  135. package/build/esm/AudioAnalysis/extractPreview.js +0 -25
  136. package/build/esm/AudioAnalysis/extractPreview.js.map +0 -1
  137. package/build/esm/AudioAnalysis/extractWaveform.js +0 -11
  138. package/build/esm/AudioAnalysis/extractWaveform.js.map +0 -1
  139. package/build/esm/AudioDeviceManager.js +0 -682
  140. package/build/esm/AudioDeviceManager.js.map +0 -1
  141. package/build/esm/AudioRecorder.provider.js +0 -40
  142. package/build/esm/AudioRecorder.provider.js.map +0 -1
  143. package/build/esm/ExpoAudioStream.native.js +0 -6
  144. package/build/esm/ExpoAudioStream.native.js.map +0 -1
  145. package/build/esm/ExpoAudioStream.types.js +0 -8
  146. package/build/esm/ExpoAudioStream.types.js.map +0 -1
  147. package/build/esm/ExpoAudioStream.web.js +0 -704
  148. package/build/esm/ExpoAudioStream.web.js.map +0 -1
  149. package/build/esm/ExpoAudioStreamModule.js +0 -713
  150. package/build/esm/ExpoAudioStreamModule.js.map +0 -1
  151. package/build/esm/WebRecorder.web.js +0 -773
  152. package/build/esm/WebRecorder.web.js.map +0 -1
  153. package/build/esm/constants/platformLimitations.js +0 -90
  154. package/build/esm/constants/platformLimitations.js.map +0 -1
  155. package/build/esm/constants.js +0 -14
  156. package/build/esm/constants.js.map +0 -1
  157. package/build/esm/events.js +0 -21
  158. package/build/esm/events.js.map +0 -1
  159. package/build/esm/hooks/useAudioDevices.js +0 -176
  160. package/build/esm/hooks/useAudioDevices.js.map +0 -1
  161. package/build/esm/index.js +0 -20
  162. package/build/esm/index.js.map +0 -1
  163. package/build/esm/trimAudio.js +0 -69
  164. package/build/esm/trimAudio.js.map +0 -1
  165. package/build/esm/useAudioRecorder.js +0 -512
  166. package/build/esm/useAudioRecorder.js.map +0 -1
  167. package/build/esm/utils/BlobFix.js +0 -498
  168. package/build/esm/utils/BlobFix.js.map +0 -1
  169. package/build/esm/utils/audioProcessing.js +0 -133
  170. package/build/esm/utils/audioProcessing.js.map +0 -1
  171. package/build/esm/utils/cleanNativeOptions.js +0 -19
  172. package/build/esm/utils/cleanNativeOptions.js.map +0 -1
  173. package/build/esm/utils/concatenateBuffers.js +0 -21
  174. package/build/esm/utils/concatenateBuffers.js.map +0 -1
  175. package/build/esm/utils/convertPCMToFloat32.js +0 -120
  176. package/build/esm/utils/convertPCMToFloat32.js.map +0 -1
  177. package/build/esm/utils/crc32.js +0 -50
  178. package/build/esm/utils/crc32.js.map +0 -1
  179. package/build/esm/utils/encodingToBitDepth.js +0 -13
  180. package/build/esm/utils/encodingToBitDepth.js.map +0 -1
  181. package/build/esm/utils/getWavFileInfo.js +0 -92
  182. package/build/esm/utils/getWavFileInfo.js.map +0 -1
  183. package/build/esm/utils/writeWavHeader.js +0 -84
  184. package/build/esm/utils/writeWavHeader.js.map +0 -1
  185. package/build/esm/workers/InlineFeaturesExtractor.web.js +0 -856
  186. package/build/esm/workers/InlineFeaturesExtractor.web.js.map +0 -1
  187. package/build/esm/workers/inlineAudioWebWorker.web.js +0 -181
  188. package/build/esm/workers/inlineAudioWebWorker.web.js.map +0 -1
  189. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts +0 -196
  190. package/build/types/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
  191. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts +0 -74
  192. package/build/types/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
  193. package/build/types/AudioAnalysis/extractAudioData.d.ts +0 -3
  194. package/build/types/AudioAnalysis/extractAudioData.d.ts.map +0 -1
  195. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts +0 -14
  196. package/build/types/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
  197. package/build/types/AudioAnalysis/extractPreview.d.ts +0 -11
  198. package/build/types/AudioAnalysis/extractPreview.d.ts.map +0 -1
  199. package/build/types/AudioAnalysis/extractWaveform.d.ts +0 -8
  200. package/build/types/AudioAnalysis/extractWaveform.d.ts.map +0 -1
  201. package/build/types/AudioDeviceManager.d.ts +0 -187
  202. package/build/types/AudioDeviceManager.d.ts.map +0 -1
  203. package/build/types/AudioRecorder.provider.d.ts +0 -11
  204. package/build/types/AudioRecorder.provider.d.ts.map +0 -1
  205. package/build/types/ExpoAudioStream.native.d.ts +0 -3
  206. package/build/types/ExpoAudioStream.native.d.ts.map +0 -1
  207. package/build/types/ExpoAudioStream.types.d.ts +0 -738
  208. package/build/types/ExpoAudioStream.types.d.ts.map +0 -1
  209. package/build/types/ExpoAudioStream.web.d.ts +0 -96
  210. package/build/types/ExpoAudioStream.web.d.ts.map +0 -1
  211. package/build/types/ExpoAudioStreamModule.d.ts +0 -3
  212. package/build/types/ExpoAudioStreamModule.d.ts.map +0 -1
  213. package/build/types/WebRecorder.web.d.ts +0 -198
  214. package/build/types/WebRecorder.web.d.ts.map +0 -1
  215. package/build/types/constants/platformLimitations.d.ts +0 -40
  216. package/build/types/constants/platformLimitations.d.ts.map +0 -1
  217. package/build/types/constants.d.ts +0 -11
  218. package/build/types/constants.d.ts.map +0 -1
  219. package/build/types/events.d.ts +0 -26
  220. package/build/types/events.d.ts.map +0 -1
  221. package/build/types/hooks/useAudioDevices.d.ts +0 -15
  222. package/build/types/hooks/useAudioDevices.d.ts.map +0 -1
  223. package/build/types/index.d.ts +0 -18
  224. package/build/types/index.d.ts.map +0 -1
  225. package/build/types/trimAudio.d.ts +0 -25
  226. package/build/types/trimAudio.d.ts.map +0 -1
  227. package/build/types/useAudioRecorder.d.ts +0 -22
  228. package/build/types/useAudioRecorder.d.ts.map +0 -1
  229. package/build/types/utils/BlobFix.d.ts +0 -9
  230. package/build/types/utils/BlobFix.d.ts.map +0 -1
  231. package/build/types/utils/audioProcessing.d.ts +0 -24
  232. package/build/types/utils/audioProcessing.d.ts.map +0 -1
  233. package/build/types/utils/cleanNativeOptions.d.ts +0 -15
  234. package/build/types/utils/cleanNativeOptions.d.ts.map +0 -1
  235. package/build/types/utils/concatenateBuffers.d.ts +0 -8
  236. package/build/types/utils/concatenateBuffers.d.ts.map +0 -1
  237. package/build/types/utils/convertPCMToFloat32.d.ts +0 -13
  238. package/build/types/utils/convertPCMToFloat32.d.ts.map +0 -1
  239. package/build/types/utils/crc32.d.ts +0 -7
  240. package/build/types/utils/crc32.d.ts.map +0 -1
  241. package/build/types/utils/encodingToBitDepth.d.ts +0 -5
  242. package/build/types/utils/encodingToBitDepth.d.ts.map +0 -1
  243. package/build/types/utils/getWavFileInfo.d.ts +0 -26
  244. package/build/types/utils/getWavFileInfo.d.ts.map +0 -1
  245. package/build/types/utils/writeWavHeader.d.ts +0 -34
  246. package/build/types/utils/writeWavHeader.d.ts.map +0 -1
  247. package/build/types/workers/InlineFeaturesExtractor.web.d.ts +0 -2
  248. package/build/types/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
  249. package/build/types/workers/inlineAudioWebWorker.web.d.ts +0 -2
  250. package/build/types/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
  251. package/expo-module.config.json +0 -10
  252. package/ios/AudioAnalysisData.swift +0 -74
  253. package/ios/AudioDeviceManager.swift +0 -670
  254. package/ios/AudioNotificationManager.swift +0 -154
  255. package/ios/AudioProcessingHelpers.swift +0 -743
  256. package/ios/AudioProcessor.swift +0 -1151
  257. package/ios/AudioStreamError.swift +0 -7
  258. package/ios/AudioStreamManager.swift +0 -2369
  259. package/ios/AudioStreamManagerDelegate.swift +0 -16
  260. package/ios/DataPoint.swift +0 -54
  261. package/ios/DecodingConfig.swift +0 -59
  262. package/ios/ExpoAudioStream.podspec +0 -33
  263. package/ios/ExpoAudioStreamModule.swift +0 -1019
  264. package/ios/ExpoAudioStudioTests/AudioFileHandlerTests.swift +0 -338
  265. package/ios/ExpoAudioStudioTests/AudioFormatUtilsTests.swift +0 -331
  266. package/ios/ExpoAudioStudioTests/AudioTestHelpers.swift +0 -130
  267. package/ios/ExpoAudioStudioTests/CompressedOnlyOutputTests.swift +0 -294
  268. package/ios/ExpoAudioStudioTests/EventEmissionIntervalTests.swift +0 -105
  269. package/ios/ExpoAudioStudioTests/Info.plist +0 -22
  270. package/ios/ExpoAudioStudioTests/README.md +0 -39
  271. package/ios/ExpoAudioStudioTests/SimpleAudioTest.swift +0 -98
  272. package/ios/ExpoAudioStudioTests/TestAudioGenerator.swift +0 -75
  273. package/ios/FFT.swift +0 -62
  274. package/ios/Features.swift +0 -95
  275. package/ios/ISSUE_IOS.md +0 -68
  276. package/ios/Logger.swift +0 -39
  277. package/ios/NotificationExtension.swift +0 -15
  278. package/ios/RecordingResult.swift +0 -22
  279. package/ios/RecordingSettings.swift +0 -308
  280. package/ios/WaveformExtractor.swift +0 -105
  281. package/ios/tests/README.md +0 -41
  282. package/ios/tests/integration/buffer_and_fallback_test.swift +0 -178
  283. package/ios/tests/integration/buffer_duration_test.swift +0 -185
  284. package/ios/tests/integration/compressed_only_output_test.swift +0 -271
  285. package/ios/tests/integration/output_control_test.swift +0 -322
  286. package/ios/tests/integration/run_integration_tests.sh +0 -37
  287. package/ios/tests/opus_support_test_macos.swift +0 -154
  288. package/ios/tests/standalone/audio_processing_test.swift +0 -144
  289. package/ios/tests/standalone/audio_recording_test.swift +0 -277
  290. package/ios/tests/standalone/audio_streaming_test.swift +0 -249
  291. package/ios/tests/standalone/standalone_test.swift +0 -144
  292. package/plugin/build/index.cjs +0 -194
  293. package/plugin/build/index.d.cts +0 -22
  294. package/plugin/build/index.js +0 -194
  295. package/plugin/src/index.ts +0 -285
  296. package/plugin/tsconfig.json +0 -10
  297. package/plugin/tsconfig.tsbuildinfo +0 -1
  298. package/src/AudioAnalysis/AudioAnalysis.types.ts +0 -224
  299. package/src/AudioAnalysis/extractAudioAnalysis.ts +0 -344
  300. package/src/AudioAnalysis/extractAudioData.ts +0 -17
  301. package/src/AudioAnalysis/extractMelSpectrogram.ts +0 -154
  302. package/src/AudioAnalysis/extractPreview.ts +0 -34
  303. package/src/AudioAnalysis/extractWaveform.ts +0 -22
  304. package/src/AudioDeviceManager.ts +0 -803
  305. package/src/AudioRecorder.provider.tsx +0 -57
  306. package/src/ExpoAudioStream.native.ts +0 -6
  307. package/src/ExpoAudioStream.types.ts +0 -874
  308. package/src/ExpoAudioStream.web.ts +0 -905
  309. package/src/ExpoAudioStreamModule.ts +0 -990
  310. package/src/WebRecorder.web.ts +0 -1005
  311. package/src/constants/platformLimitations.ts +0 -118
  312. package/src/constants.ts +0 -18
  313. package/src/events.ts +0 -60
  314. package/src/hooks/useAudioDevices.ts +0 -213
  315. package/src/index.ts +0 -54
  316. package/src/trimAudio.ts +0 -94
  317. package/src/types/crc-32.d.ts +0 -9
  318. package/src/useAudioRecorder.tsx +0 -766
  319. package/src/utils/BlobFix.ts +0 -561
  320. package/src/utils/audioProcessing.ts +0 -205
  321. package/src/utils/cleanNativeOptions.ts +0 -18
  322. package/src/utils/concatenateBuffers.ts +0 -24
  323. package/src/utils/convertPCMToFloat32.ts +0 -170
  324. package/src/utils/crc32.ts +0 -59
  325. package/src/utils/encodingToBitDepth.ts +0 -18
  326. package/src/utils/getWavFileInfo.ts +0 -132
  327. package/src/utils/writeWavHeader.ts +0 -115
  328. package/src/workers/InlineFeaturesExtractor.web.tsx +0 -855
  329. package/src/workers/inlineAudioWebWorker.web.tsx +0 -180
@@ -1,738 +0,0 @@
1
- import { AudioAnalysis, AudioFeaturesOptions, DecodingConfig } from './AudioAnalysis/AudioAnalysis.types';
2
- import { AudioAnalysisEvent } from './events';
3
- export interface CompressionInfo {
4
- /** Size of the compressed audio data in bytes */
5
- size: number;
6
- /** MIME type of the compressed audio (e.g., 'audio/aac', 'audio/opus') */
7
- mimeType: string;
8
- /** Bitrate of the compressed audio in bits per second */
9
- bitrate: number;
10
- /** Format of the compression (e.g., 'aac', 'opus') */
11
- format: string;
12
- /** URI to the compressed audio file if available */
13
- compressedFileUri?: string;
14
- }
15
- export interface AudioStreamStatus {
16
- /** Indicates whether audio recording is currently active */
17
- isRecording: boolean;
18
- /** Indicates whether recording is in a paused state */
19
- isPaused: boolean;
20
- /** Duration of the current recording in milliseconds */
21
- durationMs: number;
22
- /** Size of the recorded audio data in bytes */
23
- size: number;
24
- /** Interval in milliseconds at which recording data is emitted */
25
- interval: number;
26
- /** Interval in milliseconds at which analysis data is emitted */
27
- intervalAnalysis: number;
28
- /** MIME type of the recorded audio (e.g., 'audio/wav') */
29
- mimeType: string;
30
- /** Information about audio compression if enabled */
31
- compression?: CompressionInfo;
32
- }
33
- export interface AudioDataEvent {
34
- /** Audio data as base64 string (native) or Float32Array (web) */
35
- data: string | Float32Array;
36
- /** Current position in the audio stream in bytes */
37
- position: number;
38
- /** URI to the file being recorded */
39
- fileUri: string;
40
- /** Size of the current data chunk in bytes */
41
- eventDataSize: number;
42
- /** Total size of the recording so far in bytes */
43
- totalSize: number;
44
- /** Information about compression if enabled, including the compressed data chunk */
45
- compression?: CompressionInfo & {
46
- /** Base64 (native) or Blob (web) encoded compressed data chunk */
47
- data?: string | Blob;
48
- };
49
- }
50
- /**
51
- * Audio encoding types supported by the library.
52
- *
53
- * Platform support:
54
- * - `pcm_8bit`: Android only (iOS/Web will fallback to 16-bit)
55
- * - `pcm_16bit`: All platforms
56
- * - `pcm_32bit`: All platforms
57
- *
58
- * @see {@link https://github.com/deeeed/expo-audio-stream/blob/main/packages/expo-audio-studio/docs/PLATFORM_LIMITATIONS.md | Platform Limitations}
59
- */
60
- export type EncodingType = 'pcm_32bit' | 'pcm_16bit' | 'pcm_8bit';
61
- /**
62
- * Supported audio sample rates in Hz.
63
- * All platforms support these standard rates.
64
- */
65
- export type SampleRate = 16000 | 44100 | 48000;
66
- /**
67
- * Audio bit depth (bits per sample).
68
- *
69
- * Platform support:
70
- * - `8`: Android only (iOS/Web will fallback to 16)
71
- * - `16`: All platforms (recommended for compatibility)
72
- * - `32`: All platforms
73
- *
74
- * @see {@link https://github.com/deeeed/expo-audio-stream/blob/main/packages/expo-audio-studio/docs/PLATFORM_LIMITATIONS.md | Platform Limitations}
75
- */
76
- export type BitDepth = 8 | 16 | 32;
77
- /**
78
- * PCM format string representation.
79
- * @deprecated Use `EncodingType` directly
80
- */
81
- export type PCMFormat = `pcm_${BitDepth}bit`;
82
- export type ConsoleLike = {
83
- /** Logs a message with optional arguments */
84
- log: (message: string, ...args: unknown[]) => void;
85
- /** Logs a debug message with optional arguments */
86
- debug: (message: string, ...args: unknown[]) => void;
87
- /** Logs an info message with optional arguments */
88
- info: (message: string, ...args: unknown[]) => void;
89
- /** Logs a warning message with optional arguments */
90
- warn: (message: string, ...args: unknown[]) => void;
91
- /** Logs an error message with optional arguments */
92
- error: (message: string, ...args: unknown[]) => void;
93
- };
94
- export interface Chunk {
95
- /** Transcribed text content */
96
- text: string;
97
- /** Start and end timestamp in seconds [start, end] where end can be null if ongoing */
98
- timestamp: [number, number | null];
99
- }
100
- export interface TranscriberData {
101
- /** Unique identifier for the transcription */
102
- id: string;
103
- /** Indicates if the transcriber is currently processing */
104
- isBusy: boolean;
105
- /** Complete transcribed text */
106
- text: string;
107
- /** Start time of the transcription in milliseconds */
108
- startTime: number;
109
- /** End time of the transcription in milliseconds */
110
- endTime: number;
111
- /** Array of transcribed text chunks with timestamps */
112
- chunks: Chunk[];
113
- }
114
- export interface AudioRecording {
115
- /** URI to the recorded audio file */
116
- fileUri: string;
117
- /** Filename of the recorded audio */
118
- filename: string;
119
- /** Duration of the recording in milliseconds */
120
- durationMs: number;
121
- /** Size of the recording in bytes */
122
- size: number;
123
- /** MIME type of the recorded audio */
124
- mimeType: string;
125
- /** Number of audio channels (1 for mono, 2 for stereo) */
126
- channels: number;
127
- /** Bit depth of the audio (8, 16, or 32 bits) */
128
- bitDepth: BitDepth;
129
- /** Sample rate of the audio in Hz */
130
- sampleRate: SampleRate;
131
- /** Timestamp when the recording was created */
132
- createdAt?: number;
133
- /** Array of transcription data if available */
134
- transcripts?: TranscriberData[];
135
- /** Analysis data for the recording if processing was enabled */
136
- analysisData?: AudioAnalysis;
137
- /** Information about compression if enabled, including the URI to the compressed file */
138
- compression?: CompressionInfo & {
139
- /** URI to the compressed audio file */
140
- compressedFileUri: string;
141
- };
142
- }
143
- export interface StartRecordingResult {
144
- /** URI to the file being recorded */
145
- fileUri: string;
146
- /** MIME type of the recording */
147
- mimeType: string;
148
- /** Number of audio channels (1 for mono, 2 for stereo) */
149
- channels?: number;
150
- /** Bit depth of the audio (8, 16, or 32 bits) */
151
- bitDepth?: BitDepth;
152
- /** Sample rate of the audio in Hz */
153
- sampleRate?: SampleRate;
154
- /** Information about compression if enabled, including the URI to the compressed file */
155
- compression?: CompressionInfo & {
156
- /** URI to the compressed audio file */
157
- compressedFileUri: string;
158
- };
159
- }
160
- export interface AudioSessionConfig {
161
- /**
162
- * Audio session category that defines the audio behavior
163
- * - 'Ambient': Audio continues with silent switch, mixes with other audio
164
- * - 'SoloAmbient': Audio continues with silent switch, interrupts other audio
165
- * - 'Playback': Audio continues in background, interrupts other audio
166
- * - 'Record': Optimized for recording, interrupts other audio
167
- * - 'PlayAndRecord': Allows simultaneous playback and recording
168
- * - 'MultiRoute': Routes audio to multiple outputs simultaneously
169
- */
170
- category?: 'Ambient' | 'SoloAmbient' | 'Playback' | 'Record' | 'PlayAndRecord' | 'MultiRoute';
171
- /**
172
- * Audio session mode that defines the behavior for specific use cases
173
- * - 'Default': Standard audio behavior
174
- * - 'VoiceChat': Optimized for voice chat applications
175
- * - 'VideoChat': Optimized for video chat applications
176
- * - 'GameChat': Optimized for in-game chat
177
- * - 'VideoRecording': Optimized for video recording
178
- * - 'Measurement': Optimized for audio measurement
179
- * - 'MoviePlayback': Optimized for movie playback
180
- * - 'SpokenAudio': Optimized for spoken audio content
181
- */
182
- mode?: 'Default' | 'VoiceChat' | 'VideoChat' | 'GameChat' | 'VideoRecording' | 'Measurement' | 'MoviePlayback' | 'SpokenAudio';
183
- /**
184
- * Options that modify the behavior of the audio session category
185
- * - 'MixWithOthers': Allows mixing with other active audio sessions
186
- * - 'DuckOthers': Reduces the volume of other audio sessions
187
- * - 'InterruptSpokenAudioAndMixWithOthers': Interrupts spoken audio and mixes with others
188
- * - 'AllowBluetooth': Allows audio routing to Bluetooth devices
189
- * - 'AllowBluetoothA2DP': Allows audio routing to Bluetooth A2DP devices
190
- * - 'AllowAirPlay': Allows audio routing to AirPlay devices
191
- * - 'DefaultToSpeaker': Routes audio to the speaker by default
192
- */
193
- categoryOptions?: ('MixWithOthers' | 'DuckOthers' | 'InterruptSpokenAudioAndMixWithOthers' | 'AllowBluetooth' | 'AllowBluetoothA2DP' | 'AllowAirPlay' | 'DefaultToSpeaker')[];
194
- }
195
- export interface IOSConfig {
196
- /** Configuration for the iOS audio session */
197
- audioSession?: AudioSessionConfig;
198
- }
199
- /** Android platform specific configuration options */
200
- export interface AndroidConfig {
201
- /**
202
- * Audio focus strategy for handling interruptions and background behavior
203
- *
204
- * - `'background'`: Continue recording when app loses focus (voice recorders, transcription apps)
205
- * - `'interactive'`: Pause when losing focus, resume when gaining (music apps, games)
206
- * - `'communication'`: Maintain priority for real-time communication (video calls, voice chat)
207
- * - `'none'`: No automatic audio focus management (custom handling)
208
- *
209
- * @default 'background' when keepAwake=true, 'interactive' otherwise
210
- */
211
- audioFocusStrategy?: 'background' | 'interactive' | 'communication' | 'none';
212
- }
213
- /** Web platform specific configuration options */
214
- export interface WebConfig {
215
- }
216
- export type RecordingInterruptionReason =
217
- /** Audio focus was lost to another app */
218
- 'audioFocusLoss'
219
- /** Audio focus was regained */
220
- | 'audioFocusGain'
221
- /** Recording was interrupted by a phone call */
222
- | 'phoneCall'
223
- /** Phone call that interrupted recording has ended */
224
- | 'phoneCallEnded'
225
- /** Recording was stopped by the system or another app */
226
- | 'recordingStopped'
227
- /** Recording device was disconnected */
228
- | 'deviceDisconnected'
229
- /** Recording switched to default device after disconnection */
230
- | 'deviceFallback'
231
- /** A new audio device was connected */
232
- | 'deviceConnected'
233
- /** Device switching failed */
234
- | 'deviceSwitchFailed';
235
- export interface RecordingInterruptionEvent {
236
- /** The reason for the recording interruption */
237
- reason: RecordingInterruptionReason;
238
- /** Indicates whether the recording is paused due to the interruption */
239
- isPaused: boolean;
240
- }
241
- export interface AudioDeviceCapabilities {
242
- /** Supported sample rates for the device */
243
- sampleRates: number[];
244
- /** Supported channel counts for the device */
245
- channelCounts: number[];
246
- /** Supported bit depths for the device */
247
- bitDepths: number[];
248
- /** Whether the device supports echo cancellation */
249
- hasEchoCancellation?: boolean;
250
- /** Whether the device supports noise suppression */
251
- hasNoiseSuppression?: boolean;
252
- /** Whether the device supports automatic gain control */
253
- hasAutomaticGainControl?: boolean;
254
- }
255
- export interface AudioDevice {
256
- /** Unique identifier for the device */
257
- id: string;
258
- /** Human-readable name of the device */
259
- name: string;
260
- /** Device type (builtin_mic, bluetooth, etc.) */
261
- type: string;
262
- /** Whether this is the system default device */
263
- isDefault: boolean;
264
- /** Audio capabilities for the device */
265
- capabilities: AudioDeviceCapabilities;
266
- /** Whether the device is currently available */
267
- isAvailable: boolean;
268
- }
269
- /** Defines how recording should behave when a device becomes unavailable */
270
- export declare const DeviceDisconnectionBehavior: {
271
- /** Pause recording when device disconnects */
272
- readonly PAUSE: "pause";
273
- /** Switch to default device and continue recording */
274
- readonly FALLBACK: "fallback";
275
- };
276
- /** Type for DeviceDisconnectionBehavior values */
277
- export type DeviceDisconnectionBehaviorType = (typeof DeviceDisconnectionBehavior)[keyof typeof DeviceDisconnectionBehavior];
278
- /**
279
- * Configuration for audio output files during recording
280
- */
281
- export interface OutputConfig {
282
- /**
283
- * Configuration for the primary (uncompressed) output file
284
- */
285
- primary?: {
286
- /** Whether to create the primary output file (default: true) */
287
- enabled?: boolean;
288
- /** Format for the primary output (currently only 'wav' is supported) */
289
- format?: 'wav';
290
- };
291
- /**
292
- * Configuration for the compressed output file
293
- */
294
- compressed?: {
295
- /** Whether to create a compressed output file (default: false) */
296
- enabled?: boolean;
297
- /**
298
- * Format for compression
299
- * - 'aac': Advanced Audio Coding - supported on all platforms
300
- * - 'opus': Opus encoding - supported on Android and Web; on iOS will automatically fall back to AAC
301
- */
302
- format?: 'aac' | 'opus';
303
- /** Bitrate for compression in bits per second (default: 128000) */
304
- bitrate?: number;
305
- /**
306
- * Prefer raw stream over container format (Android only)
307
- * - true: Use raw AAC stream (.aac files) like in v2.10.6
308
- * - false/undefined: Use M4A container (.m4a files) for better seeking support
309
- * Note: iOS always produces M4A containers and ignores this flag
310
- */
311
- preferRawStream?: boolean;
312
- };
313
- }
314
- export interface RecordingConfig {
315
- /** Sample rate for recording in Hz (16000, 44100, or 48000) */
316
- sampleRate?: SampleRate;
317
- /** Number of audio channels (1 for mono, 2 for stereo) */
318
- channels?: 1 | 2;
319
- /**
320
- * Encoding type for the recording.
321
- *
322
- * Platform limitations:
323
- * - `pcm_8bit`: Android only (iOS/Web will fallback to `pcm_16bit` with warning)
324
- * - `pcm_16bit`: All platforms (recommended for cross-platform compatibility)
325
- * - `pcm_32bit`: All platforms
326
- *
327
- * The library will automatically validate and adjust the encoding based on
328
- * platform capabilities. A warning will be logged if fallback is required.
329
- *
330
- * @default 'pcm_16bit'
331
- * @see {@link EncodingType}
332
- * @see {@link https://github.com/deeeed/expo-audio-stream/blob/main/packages/expo-audio-studio/docs/PLATFORM_LIMITATIONS.md | Platform Limitations}
333
- */
334
- encoding?: EncodingType;
335
- /** Interval in milliseconds at which to emit recording data (minimum: 10ms) */
336
- interval?: number;
337
- /** Interval in milliseconds at which to emit analysis data (minimum: 10ms) */
338
- intervalAnalysis?: number;
339
- /** Keep the device awake while recording (default is false) */
340
- keepAwake?: boolean;
341
- /** Show a notification during recording (default is false) */
342
- showNotification?: boolean;
343
- /** Show waveform in the notification (Android only, when showNotification is true) */
344
- showWaveformInNotification?: boolean;
345
- /** Configuration for the notification */
346
- notification?: NotificationConfig;
347
- /** Enable audio processing (default is false) */
348
- enableProcessing?: boolean;
349
- /** iOS-specific configuration */
350
- ios?: IOSConfig;
351
- /** Android-specific configuration */
352
- android?: AndroidConfig;
353
- /** Web-specific configuration options */
354
- web?: WebConfig;
355
- /** Duration of each segment in milliseconds for analysis (default: 100) */
356
- segmentDurationMs?: number;
357
- /** Feature options to extract during audio processing */
358
- features?: AudioFeaturesOptions;
359
- /** Callback function to handle audio stream data */
360
- onAudioStream?: (_: AudioDataEvent) => Promise<void>;
361
- /** Callback function to handle audio features extraction results */
362
- onAudioAnalysis?: (_: AudioAnalysisEvent) => Promise<void>;
363
- /**
364
- * Configuration for audio output files
365
- *
366
- * Examples:
367
- * - Primary only (default): `{ primary: { enabled: true } }`
368
- * - Compressed only: `{ primary: { enabled: false }, compressed: { enabled: true, format: 'aac' } }`
369
- * - Both outputs: `{ compressed: { enabled: true } }`
370
- * - Streaming only: `{ primary: { enabled: false } }`
371
- */
372
- output?: OutputConfig;
373
- /** Whether to automatically resume recording after an interruption (default is false) */
374
- autoResumeAfterInterruption?: boolean;
375
- /** Optional callback to handle recording interruptions */
376
- onRecordingInterrupted?: (_: RecordingInterruptionEvent) => void;
377
- /** Optional directory path where output files will be saved */
378
- outputDirectory?: string;
379
- /** Optional filename for the recording (uses UUID if not provided) */
380
- filename?: string;
381
- /** ID of the device to use for recording (if not specified, uses default) */
382
- deviceId?: string;
383
- /** How to handle device disconnection during recording */
384
- deviceDisconnectionBehavior?: DeviceDisconnectionBehaviorType;
385
- /**
386
- * Buffer duration in seconds. Controls the size of audio buffers
387
- * used during recording. Smaller values reduce latency but increase
388
- * CPU usage. Larger values improve efficiency but increase latency.
389
- *
390
- * Platform Notes:
391
- * - iOS/macOS: Minimum effective 0.1s, uses accumulation below
392
- * - Android: Respects all sizes within hardware limits
393
- * - Web: Fully configurable
394
- *
395
- * Default: undefined (uses platform default ~23ms at 44.1kHz)
396
- * Recommended: 0.01 - 0.5 seconds
397
- * Optimal iOS: >= 0.1 seconds
398
- */
399
- bufferDurationSeconds?: number;
400
- }
401
- export interface NotificationConfig {
402
- /** Title of the notification */
403
- title?: string;
404
- /** Main text content of the notification */
405
- text?: string;
406
- /** Icon to be displayed in the notification (resource name or URI) */
407
- icon?: string;
408
- /** Android-specific notification configuration */
409
- android?: {
410
- /** Unique identifier for the notification channel */
411
- channelId?: string;
412
- /** User-visible name of the notification channel */
413
- channelName?: string;
414
- /** User-visible description of the notification channel */
415
- channelDescription?: string;
416
- /** Unique identifier for this notification */
417
- notificationId?: number;
418
- /** List of actions that can be performed from the notification */
419
- actions?: NotificationAction[];
420
- /** Configuration for the waveform visualization in the notification */
421
- waveform?: WaveformConfig;
422
- /** Color of the notification LED (if device supports it) */
423
- lightColor?: string;
424
- /** Priority of the notification (affects how it's displayed) */
425
- priority?: 'min' | 'low' | 'default' | 'high' | 'max';
426
- /** Accent color for the notification (used for the app icon and buttons) */
427
- accentColor?: string;
428
- /** Whether to show pause/resume actions in the notification (default: true) */
429
- showPauseResumeActions?: boolean;
430
- };
431
- /** iOS-specific notification configuration */
432
- ios?: {
433
- /** Identifier for the notification category (used for grouping similar notifications) */
434
- categoryIdentifier?: string;
435
- };
436
- }
437
- export interface NotificationAction {
438
- /** Display title for the action */
439
- title: string;
440
- /** Unique identifier for the action */
441
- identifier: string;
442
- /** Icon to be displayed for the action (Android only) */
443
- icon?: string;
444
- }
445
- export interface WaveformConfig {
446
- /** The color of the waveform (e.g., "#FFFFFF" for white) */
447
- color?: string;
448
- /** Opacity of the waveform (0.0 - 1.0) */
449
- opacity?: number;
450
- /** Width of the waveform line (default: 1.5) */
451
- strokeWidth?: number;
452
- /** Drawing style: "stroke" for outline, "fill" for solid */
453
- style?: 'stroke' | 'fill';
454
- /** Whether to mirror the waveform (symmetrical display) */
455
- mirror?: boolean;
456
- /** Height of the waveform view in dp (default: 64) */
457
- height?: number;
458
- }
459
- export interface ExtractAudioDataOptions {
460
- /** URI of the audio file to extract data from */
461
- fileUri: string;
462
- /** Start time in milliseconds (for time-based range) */
463
- startTimeMs?: number;
464
- /** End time in milliseconds (for time-based range) */
465
- endTimeMs?: number;
466
- /** Start position in bytes (for byte-based range) */
467
- position?: number;
468
- /** Length in bytes to extract (for byte-based range) */
469
- length?: number;
470
- /** Include normalized audio data in [-1, 1] range */
471
- includeNormalizedData?: boolean;
472
- /** Include base64 encoded string representation of the audio data */
473
- includeBase64Data?: boolean;
474
- /** Include WAV header in the PCM data (makes it a valid WAV file) */
475
- includeWavHeader?: boolean;
476
- /** Logger for debugging - can pass console directly. */
477
- logger?: ConsoleLike;
478
- /** Compute the checksum of the PCM data */
479
- computeChecksum?: boolean;
480
- /** Target config for the normalized audio (Android and Web) */
481
- decodingOptions?: DecodingConfig;
482
- }
483
- export interface ExtractedAudioData {
484
- /** Raw PCM audio data */
485
- pcmData: Uint8Array;
486
- /** Normalized audio data in [-1, 1] range (when includeNormalizedData is true) */
487
- normalizedData?: Float32Array;
488
- /** Base64 encoded string representation of the audio data (when includeBase64Data is true) */
489
- base64Data?: string;
490
- /** Sample rate in Hz (e.g., 44100, 48000) */
491
- sampleRate: number;
492
- /** Number of audio channels (1 for mono, 2 for stereo) */
493
- channels: number;
494
- /** Bits per sample (8, 16, or 32) */
495
- bitDepth: BitDepth;
496
- /** Duration of the audio in milliseconds */
497
- durationMs: number;
498
- /** PCM format identifier (e.g., "pcm_16bit") */
499
- format: PCMFormat;
500
- /** Total number of audio samples per channel */
501
- samples: number;
502
- /** Whether the pcmData includes a WAV header */
503
- hasWavHeader?: boolean;
504
- /** CRC32 Checksum of PCM data */
505
- checksum?: number;
506
- }
507
- export interface UseAudioRecorderState {
508
- /**
509
- * Prepares recording with the specified configuration without starting it.
510
- *
511
- * This method eliminates the latency between calling startRecording and the actual recording beginning.
512
- * It pre-initializes all audio resources, requests permissions, and sets up audio sessions in advance,
513
- * allowing for true zero-latency recording start when startRecording is called later.
514
- *
515
- * Technical benefits:
516
- * - Eliminates audio pipeline initialization delay (50-300ms depending on platform)
517
- * - Pre-allocates audio buffers to avoid memory allocation during recording start
518
- * - Initializes audio hardware in advance (particularly important on iOS)
519
- * - Requests and verifies permissions before the critical recording moment
520
- *
521
- * Use this method when:
522
- * - You need zero-latency recording start (e.g., voice commands, musical applications)
523
- * - You're building time-sensitive applications where missing initial audio would be problematic
524
- * - You want to prepare resources during app initialization, screen loading, or preceding user interaction
525
- * - You need to ensure recording starts reliably and instantly on all platforms
526
- *
527
- * @param config - The recording configuration, identical to what you would pass to startRecording
528
- * @returns A promise that resolves when preparation is complete
529
- *
530
- * @example
531
- * // Prepare during component mounting
532
- * useEffect(() => {
533
- * prepareRecording({
534
- * sampleRate: 44100,
535
- * channels: 1,
536
- * encoding: 'pcm_16bit',
537
- * });
538
- * }, []);
539
- *
540
- * // Later when user taps record button, it starts with zero latency
541
- * const handleRecordPress = () => startRecording({
542
- * sampleRate: 44100,
543
- * channels: 1,
544
- * encoding: 'pcm_16bit',
545
- * });
546
- */
547
- prepareRecording: (_: RecordingConfig) => Promise<void>;
548
- /** Starts recording with the specified configuration */
549
- startRecording: (_: RecordingConfig) => Promise<StartRecordingResult>;
550
- /** Stops the current recording and returns the recording data */
551
- stopRecording: () => Promise<AudioRecording | null>;
552
- /** Pauses the current recording */
553
- pauseRecording: () => Promise<void>;
554
- /** Resumes a paused recording */
555
- resumeRecording: () => Promise<void>;
556
- /** Indicates whether recording is currently active */
557
- isRecording: boolean;
558
- /** Indicates whether recording is in a paused state */
559
- isPaused: boolean;
560
- /** Duration of the current recording in milliseconds */
561
- durationMs: number;
562
- /** Size of the recorded audio in bytes */
563
- size: number;
564
- /** Information about compression if enabled */
565
- compression?: CompressionInfo;
566
- /** Analysis data for the recording if processing was enabled */
567
- analysisData?: AudioAnalysis;
568
- /** Optional callback to handle recording interruptions */
569
- onRecordingInterrupted?: (_: RecordingInterruptionEvent) => void;
570
- }
571
- /**
572
- * Represents an event emitted during the trimming process to report progress.
573
- */
574
- export interface TrimProgressEvent {
575
- /**
576
- * The percentage of the trimming process that has been completed, ranging from 0 to 100.
577
- */
578
- progress: number;
579
- /**
580
- * The number of bytes that have been processed so far. This is optional and may not be provided in all implementations.
581
- */
582
- bytesProcessed?: number;
583
- /**
584
- * The total number of bytes to process. This is optional and may not be provided in all implementations.
585
- */
586
- totalBytes?: number;
587
- }
588
- /**
589
- * Defines a time range in milliseconds for trimming operations.
590
- */
591
- export interface TimeRange {
592
- /**
593
- * The start time of the range in milliseconds.
594
- */
595
- startTimeMs: number;
596
- /**
597
- * The end time of the range in milliseconds.
598
- */
599
- endTimeMs: number;
600
- }
601
- /**
602
- * Options for configuring the audio trimming operation.
603
- */
604
- export interface TrimAudioOptions {
605
- /**
606
- * The URI of the audio file to trim.
607
- */
608
- fileUri: string;
609
- /**
610
- * The mode of trimming to apply.
611
- * - `'single'`: Trims the audio to a single range defined by `startTimeMs` and `endTimeMs`.
612
- * - `'keep'`: Keeps the specified `ranges` and removes all other portions of the audio.
613
- * - `'remove'`: Removes the specified `ranges` and keeps the remaining portions of the audio.
614
- * @default 'single'
615
- */
616
- mode?: 'single' | 'keep' | 'remove';
617
- /**
618
- * An array of time ranges to keep or remove, depending on the `mode`.
619
- * - Required for `'keep'` and `'remove'` modes.
620
- * - Ignored when `mode` is `'single'`.
621
- */
622
- ranges?: TimeRange[];
623
- /**
624
- * The start time in milliseconds for the `'single'` mode.
625
- * - If not provided, trimming starts from the beginning of the audio (0 ms).
626
- */
627
- startTimeMs?: number;
628
- /**
629
- * The end time in milliseconds for the `'single'` mode.
630
- * - If not provided, trimming extends to the end of the audio.
631
- */
632
- endTimeMs?: number;
633
- /**
634
- * The name of the output file. If not provided, a default name will be generated.
635
- */
636
- outputFileName?: string;
637
- /**
638
- * Configuration for the output audio format.
639
- */
640
- outputFormat?: {
641
- /**
642
- * The format of the output audio file.
643
- * - `'wav'`: Waveform Audio File Format (uncompressed).
644
- * - `'aac'`: Advanced Audio Coding (compressed). Not supported on web platforms.
645
- * - `'opus'`: Opus Interactive Audio Codec (compressed).
646
- */
647
- format: 'wav' | 'aac' | 'opus';
648
- /**
649
- * The sample rate of the output audio in Hertz (Hz).
650
- * - If not provided, the input audio's sample rate is used.
651
- */
652
- sampleRate?: number;
653
- /**
654
- * The number of channels in the output audio (e.g., 1 for mono, 2 for stereo).
655
- * - If not provided, the input audio's channel count is used.
656
- */
657
- channels?: number;
658
- /**
659
- * The bit depth of the output audio, applicable to PCM formats like `'wav'`.
660
- * - If not provided, the input audio's bit depth is used.
661
- */
662
- bitDepth?: number;
663
- /**
664
- * The bitrate of the output audio in bits per second, applicable to compressed formats like `'aac'`.
665
- * - If not provided, a default bitrate is used based on the format.
666
- */
667
- bitrate?: number;
668
- };
669
- /**
670
- * Options for decoding the input audio file.
671
- * - See `DecodingConfig` for details.
672
- */
673
- decodingOptions?: DecodingConfig;
674
- }
675
- /**
676
- * Result of the audio trimming operation.
677
- */
678
- export interface TrimAudioResult {
679
- /**
680
- * The URI of the trimmed audio file.
681
- */
682
- uri: string;
683
- /**
684
- * The filename of the trimmed audio file.
685
- */
686
- filename: string;
687
- /**
688
- * The duration of the trimmed audio in milliseconds.
689
- */
690
- durationMs: number;
691
- /**
692
- * The size of the trimmed audio file in bytes.
693
- */
694
- size: number;
695
- /**
696
- * The sample rate of the trimmed audio in Hertz (Hz).
697
- */
698
- sampleRate: number;
699
- /**
700
- * The number of channels in the trimmed audio (e.g., 1 for mono, 2 for stereo).
701
- */
702
- channels: number;
703
- /**
704
- * The bit depth of the trimmed audio, applicable to PCM formats like `'wav'`.
705
- */
706
- bitDepth: number;
707
- /**
708
- * The MIME type of the trimmed audio file (e.g., `'audio/wav'`, `'audio/mpeg'`).
709
- */
710
- mimeType: string;
711
- /**
712
- * Information about compression if the output format is compressed.
713
- */
714
- compression?: {
715
- /**
716
- * The format of the compression (e.g., `'aac'`, `'mp3'`, `'opus'`).
717
- */
718
- format: string;
719
- /**
720
- * The bitrate of the compressed audio in bits per second.
721
- */
722
- bitrate: number;
723
- /**
724
- * The size of the compressed audio file in bytes.
725
- */
726
- size: number;
727
- };
728
- /**
729
- * Information about the processing time.
730
- */
731
- processingInfo?: {
732
- /**
733
- * The time it took to process the audio in milliseconds.
734
- */
735
- durationMs: number;
736
- };
737
- }
738
- //# sourceMappingURL=ExpoAudioStream.types.d.ts.map