@siteed/expo-audio-stream 2.1.0 → 2.2.1-beta.0

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 (189) hide show
  1. package/README.md +23 -260
  2. package/build/index.d.ts +11 -15
  3. package/build/index.js +54 -14
  4. package/build/src/index.d.ts +11 -0
  5. package/build/src/index.js +54 -0
  6. package/package.json +49 -110
  7. package/src/index.ts +18 -32
  8. package/CHANGELOG.md +0 -206
  9. package/android/build.gradle +0 -105
  10. package/android/src/main/AndroidManifest.xml +0 -27
  11. package/android/src/main/java/net/siteed/audiostream/AudioAnalysisData.kt +0 -166
  12. package/android/src/main/java/net/siteed/audiostream/AudioDataEncoder.kt +0 -9
  13. package/android/src/main/java/net/siteed/audiostream/AudioFileHandler.kt +0 -131
  14. package/android/src/main/java/net/siteed/audiostream/AudioFormatUtils.kt +0 -103
  15. package/android/src/main/java/net/siteed/audiostream/AudioNotificationsManager.kt +0 -435
  16. package/android/src/main/java/net/siteed/audiostream/AudioProcessor.kt +0 -2235
  17. package/android/src/main/java/net/siteed/audiostream/AudioRecorderManager.kt +0 -1437
  18. package/android/src/main/java/net/siteed/audiostream/AudioRecordingService.kt +0 -152
  19. package/android/src/main/java/net/siteed/audiostream/AudioTrimmer.kt +0 -1099
  20. package/android/src/main/java/net/siteed/audiostream/Constants.kt +0 -21
  21. package/android/src/main/java/net/siteed/audiostream/EventSender.kt +0 -7
  22. package/android/src/main/java/net/siteed/audiostream/ExpoAudioStreamModule.kt +0 -739
  23. package/android/src/main/java/net/siteed/audiostream/FFT.kt +0 -99
  24. package/android/src/main/java/net/siteed/audiostream/Features.kt +0 -98
  25. package/android/src/main/java/net/siteed/audiostream/NotificationConfig.kt +0 -70
  26. package/android/src/main/java/net/siteed/audiostream/PermissionUtils.kt +0 -59
  27. package/android/src/main/java/net/siteed/audiostream/RecordingActionReceiver.kt +0 -59
  28. package/android/src/main/java/net/siteed/audiostream/RecordingConfig.kt +0 -205
  29. package/android/src/main/java/net/siteed/audiostream/WaveformConfig.kt +0 -19
  30. package/android/src/main/java/net/siteed/audiostream/WaveformRenderer.kt +0 -159
  31. package/android/src/main/res/drawable/ic_default_action_icon.xml +0 -16
  32. package/android/src/main/res/drawable/ic_microphone.xml +0 -13
  33. package/android/src/main/res/drawable/ic_pause.xml +0 -10
  34. package/android/src/main/res/drawable/ic_play.xml +0 -10
  35. package/android/src/main/res/drawable/ic_stop.xml +0 -10
  36. package/android/src/main/res/layout/notification_recording.xml +0 -37
  37. package/android/src/main/test/java/net/siteed/audiostream/AudioProcessorTest.kt +0 -56
  38. package/app.plugin.js +0 -1
  39. package/build/AudioAnalysis/AudioAnalysis.types.d.ts +0 -179
  40. package/build/AudioAnalysis/AudioAnalysis.types.d.ts.map +0 -1
  41. package/build/AudioAnalysis/AudioAnalysis.types.js +0 -3
  42. package/build/AudioAnalysis/AudioAnalysis.types.js.map +0 -1
  43. package/build/AudioAnalysis/extractAudioAnalysis.d.ts +0 -68
  44. package/build/AudioAnalysis/extractAudioAnalysis.d.ts.map +0 -1
  45. package/build/AudioAnalysis/extractAudioAnalysis.js +0 -203
  46. package/build/AudioAnalysis/extractAudioAnalysis.js.map +0 -1
  47. package/build/AudioAnalysis/extractAudioData.d.ts +0 -3
  48. package/build/AudioAnalysis/extractAudioData.d.ts.map +0 -1
  49. package/build/AudioAnalysis/extractAudioData.js +0 -5
  50. package/build/AudioAnalysis/extractAudioData.js.map +0 -1
  51. package/build/AudioAnalysis/extractMelSpectrogram.d.ts +0 -14
  52. package/build/AudioAnalysis/extractMelSpectrogram.d.ts.map +0 -1
  53. package/build/AudioAnalysis/extractMelSpectrogram.js +0 -85
  54. package/build/AudioAnalysis/extractMelSpectrogram.js.map +0 -1
  55. package/build/AudioAnalysis/extractPreview.d.ts +0 -11
  56. package/build/AudioAnalysis/extractPreview.d.ts.map +0 -1
  57. package/build/AudioAnalysis/extractPreview.js +0 -25
  58. package/build/AudioAnalysis/extractPreview.js.map +0 -1
  59. package/build/AudioAnalysis/extractWaveform.d.ts +0 -8
  60. package/build/AudioAnalysis/extractWaveform.d.ts.map +0 -1
  61. package/build/AudioAnalysis/extractWaveform.js +0 -11
  62. package/build/AudioAnalysis/extractWaveform.js.map +0 -1
  63. package/build/AudioRecorder.provider.d.ts +0 -11
  64. package/build/AudioRecorder.provider.d.ts.map +0 -1
  65. package/build/AudioRecorder.provider.js +0 -37
  66. package/build/AudioRecorder.provider.js.map +0 -1
  67. package/build/ExpoAudioStream.native.d.ts +0 -3
  68. package/build/ExpoAudioStream.native.d.ts.map +0 -1
  69. package/build/ExpoAudioStream.native.js +0 -6
  70. package/build/ExpoAudioStream.native.js.map +0 -1
  71. package/build/ExpoAudioStream.types.d.ts +0 -532
  72. package/build/ExpoAudioStream.types.d.ts.map +0 -1
  73. package/build/ExpoAudioStream.types.js +0 -2
  74. package/build/ExpoAudioStream.types.js.map +0 -1
  75. package/build/ExpoAudioStream.web.d.ts +0 -59
  76. package/build/ExpoAudioStream.web.d.ts.map +0 -1
  77. package/build/ExpoAudioStream.web.js +0 -285
  78. package/build/ExpoAudioStream.web.js.map +0 -1
  79. package/build/ExpoAudioStreamModule.d.ts +0 -3
  80. package/build/ExpoAudioStreamModule.d.ts.map +0 -1
  81. package/build/ExpoAudioStreamModule.js +0 -693
  82. package/build/ExpoAudioStreamModule.js.map +0 -1
  83. package/build/WebRecorder.web.d.ts +0 -119
  84. package/build/WebRecorder.web.d.ts.map +0 -1
  85. package/build/WebRecorder.web.js +0 -436
  86. package/build/WebRecorder.web.js.map +0 -1
  87. package/build/constants.d.ts +0 -11
  88. package/build/constants.d.ts.map +0 -1
  89. package/build/constants.js +0 -14
  90. package/build/constants.js.map +0 -1
  91. package/build/events.d.ts +0 -26
  92. package/build/events.d.ts.map +0 -1
  93. package/build/events.js +0 -21
  94. package/build/events.js.map +0 -1
  95. package/build/index.d.ts.map +0 -1
  96. package/build/index.js.map +0 -1
  97. package/build/trimAudio.d.ts +0 -25
  98. package/build/trimAudio.d.ts.map +0 -1
  99. package/build/trimAudio.js +0 -67
  100. package/build/trimAudio.js.map +0 -1
  101. package/build/useAudioRecorder.d.ts +0 -21
  102. package/build/useAudioRecorder.d.ts.map +0 -1
  103. package/build/useAudioRecorder.js +0 -427
  104. package/build/useAudioRecorder.js.map +0 -1
  105. package/build/utils/BlobFix.d.ts +0 -9
  106. package/build/utils/BlobFix.d.ts.map +0 -1
  107. package/build/utils/BlobFix.js +0 -498
  108. package/build/utils/BlobFix.js.map +0 -1
  109. package/build/utils/audioProcessing.d.ts +0 -24
  110. package/build/utils/audioProcessing.d.ts.map +0 -1
  111. package/build/utils/audioProcessing.js +0 -133
  112. package/build/utils/audioProcessing.js.map +0 -1
  113. package/build/utils/concatenateBuffers.d.ts +0 -8
  114. package/build/utils/concatenateBuffers.d.ts.map +0 -1
  115. package/build/utils/concatenateBuffers.js +0 -21
  116. package/build/utils/concatenateBuffers.js.map +0 -1
  117. package/build/utils/convertPCMToFloat32.d.ts +0 -13
  118. package/build/utils/convertPCMToFloat32.d.ts.map +0 -1
  119. package/build/utils/convertPCMToFloat32.js +0 -120
  120. package/build/utils/convertPCMToFloat32.js.map +0 -1
  121. package/build/utils/encodingToBitDepth.d.ts +0 -5
  122. package/build/utils/encodingToBitDepth.d.ts.map +0 -1
  123. package/build/utils/encodingToBitDepth.js +0 -13
  124. package/build/utils/encodingToBitDepth.js.map +0 -1
  125. package/build/utils/getWavFileInfo.d.ts +0 -26
  126. package/build/utils/getWavFileInfo.d.ts.map +0 -1
  127. package/build/utils/getWavFileInfo.js +0 -92
  128. package/build/utils/getWavFileInfo.js.map +0 -1
  129. package/build/utils/writeWavHeader.d.ts +0 -49
  130. package/build/utils/writeWavHeader.d.ts.map +0 -1
  131. package/build/utils/writeWavHeader.js +0 -91
  132. package/build/utils/writeWavHeader.js.map +0 -1
  133. package/build/workers/InlineFeaturesExtractor.web.d.ts +0 -2
  134. package/build/workers/InlineFeaturesExtractor.web.d.ts.map +0 -1
  135. package/build/workers/InlineFeaturesExtractor.web.js +0 -828
  136. package/build/workers/InlineFeaturesExtractor.web.js.map +0 -1
  137. package/build/workers/inlineAudioWebWorker.web.d.ts +0 -2
  138. package/build/workers/inlineAudioWebWorker.web.d.ts.map +0 -1
  139. package/build/workers/inlineAudioWebWorker.web.js +0 -157
  140. package/build/workers/inlineAudioWebWorker.web.js.map +0 -1
  141. package/expo-module.config.json +0 -9
  142. package/ios/AudioAnalysisData.swift +0 -74
  143. package/ios/AudioNotificationManager.swift +0 -135
  144. package/ios/AudioProcessingHelpers.swift +0 -743
  145. package/ios/AudioProcessor.swift +0 -1313
  146. package/ios/AudioStreamError.swift +0 -7
  147. package/ios/AudioStreamManager.swift +0 -1708
  148. package/ios/AudioStreamManagerDelegate.swift +0 -16
  149. package/ios/DataPoint.swift +0 -54
  150. package/ios/DecodingConfig.swift +0 -47
  151. package/ios/ExpoAudioStream.podspec +0 -27
  152. package/ios/ExpoAudioStreamModule.swift +0 -805
  153. package/ios/FFT.swift +0 -62
  154. package/ios/Features.swift +0 -95
  155. package/ios/Logger.swift +0 -7
  156. package/ios/NotificationExtension.swift +0 -15
  157. package/ios/RecordingResult.swift +0 -22
  158. package/ios/RecordingSettings.swift +0 -265
  159. package/ios/WaveformExtractor.swift +0 -105
  160. package/plugin/build/index.d.ts +0 -21
  161. package/plugin/build/index.js +0 -191
  162. package/plugin/src/index.ts +0 -278
  163. package/plugin/tsconfig.json +0 -10
  164. package/plugin/tsconfig.tsbuildinfo +0 -1
  165. package/src/AudioAnalysis/AudioAnalysis.types.ts +0 -202
  166. package/src/AudioAnalysis/extractAudioAnalysis.ts +0 -333
  167. package/src/AudioAnalysis/extractAudioData.ts +0 -6
  168. package/src/AudioAnalysis/extractMelSpectrogram.ts +0 -144
  169. package/src/AudioAnalysis/extractPreview.ts +0 -34
  170. package/src/AudioAnalysis/extractWaveform.ts +0 -22
  171. package/src/AudioRecorder.provider.tsx +0 -54
  172. package/src/ExpoAudioStream.native.ts +0 -6
  173. package/src/ExpoAudioStream.types.ts +0 -641
  174. package/src/ExpoAudioStream.web.ts +0 -359
  175. package/src/ExpoAudioStreamModule.ts +0 -967
  176. package/src/WebRecorder.web.ts +0 -580
  177. package/src/constants.ts +0 -18
  178. package/src/events.ts +0 -60
  179. package/src/trimAudio.ts +0 -90
  180. package/src/useAudioRecorder.tsx +0 -620
  181. package/src/utils/BlobFix.ts +0 -559
  182. package/src/utils/audioProcessing.ts +0 -205
  183. package/src/utils/concatenateBuffers.ts +0 -24
  184. package/src/utils/convertPCMToFloat32.ts +0 -170
  185. package/src/utils/encodingToBitDepth.ts +0 -18
  186. package/src/utils/getWavFileInfo.ts +0 -132
  187. package/src/utils/writeWavHeader.ts +0 -114
  188. package/src/workers/InlineFeaturesExtractor.web.tsx +0 -827
  189. package/src/workers/inlineAudioWebWorker.web.tsx +0 -156
@@ -1,159 +0,0 @@
1
- // WaveformRenderer.kt
2
- package net.siteed.audiostream
3
-
4
- import android.graphics.Bitmap
5
- import android.graphics.Canvas
6
- import android.graphics.Color
7
- import android.graphics.Paint
8
- import android.graphics.Path
9
- import kotlin.math.abs
10
-
11
- class WaveformRenderer {
12
- private enum class Style {
13
- STROKE,
14
- FILL
15
- }
16
-
17
- private data class RenderConfig(
18
- val color: Int = Color.WHITE,
19
- val opacity: Float = 1.0f,
20
- val strokeWidth: Float = 1.5f,
21
- val style: Style = Style.STROKE,
22
- val mirror: Boolean = true,
23
- val height: Int = 64
24
- ) {
25
- companion object {
26
- fun fromConfig(config: WaveformConfig?): RenderConfig {
27
- if (config == null) return RenderConfig()
28
-
29
- return RenderConfig(
30
- color = try {
31
- Color.parseColor(config.color)
32
- } catch (e: Exception) {
33
- Color.WHITE
34
- },
35
- opacity = config.opacity.coerceIn(0f, 1f),
36
- strokeWidth = config.strokeWidth.coerceAtLeast(0.5f),
37
- style = when (config.style.lowercase()) {
38
- "fill" -> Style.FILL
39
- else -> Style.STROKE
40
- },
41
- mirror = config.mirror,
42
- height = config.height.coerceIn(32, 128)
43
- )
44
- }
45
- }
46
- }
47
-
48
- fun generateWaveform(audioData: FloatArray, config: WaveformConfig?): Bitmap {
49
- return generateWaveform(audioData, RenderConfig.fromConfig(config))
50
- }
51
-
52
- fun e(audioData: FloatArray): Bitmap {
53
- return generateWaveform(audioData, RenderConfig())
54
- }
55
-
56
- private fun generateWaveform(audioData: FloatArray, config: RenderConfig): Bitmap {
57
- val width = 400 // Fixed width for notification
58
- val height = config.height
59
- val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
60
- val canvas = Canvas(bitmap)
61
-
62
- val paint = Paint().apply {
63
- color = config.color
64
- alpha = (config.opacity * 255).toInt()
65
- strokeWidth = config.strokeWidth
66
- isAntiAlias = true
67
- style = when (config.style) {
68
- Style.FILL -> Paint.Style.FILL
69
- Style.STROKE -> Paint.Style.STROKE
70
- }
71
- strokeCap = Paint.Cap.ROUND
72
- }
73
-
74
- canvas.drawColor(Color.TRANSPARENT)
75
-
76
- val centerY = height / 2f
77
- val pointsPerSegment = (audioData.size / width.toFloat()).coerceAtLeast(1f)
78
- val path = Path()
79
-
80
- // Calculate max amplitude for scaling
81
- val maxAmplitude = audioData.maxOf { abs(it) }.coerceAtLeast(0.01f)
82
- val scaleFactor = (height * 0.4f) / maxAmplitude
83
-
84
- drawWaveform(path, audioData, width, centerY, pointsPerSegment, scaleFactor)
85
-
86
- if (config.mirror) {
87
- drawMirroredWaveform(path, audioData, width, centerY, pointsPerSegment, scaleFactor)
88
- }
89
-
90
- // Add shadow for filled style
91
- if (config.style == Style.FILL) {
92
- paint.setShadowLayer(4f, 0f, 2f, Color.argb(50, 0, 0, 0))
93
- }
94
-
95
- canvas.drawPath(path, paint)
96
- return bitmap
97
- }
98
-
99
- private fun drawWaveform(
100
- path: Path,
101
- audioData: FloatArray,
102
- width: Int,
103
- centerY: Float,
104
- pointsPerSegment: Float,
105
- scaleFactor: Float
106
- ) {
107
- var firstPoint = true
108
- for (i in 0 until width) {
109
- val startIdx = (i * pointsPerSegment).toInt()
110
- val endIdx = ((i + 1) * pointsPerSegment).toInt().coerceAtMost(audioData.size)
111
-
112
- val avgAmplitude = calculateAverageAmplitude(audioData, startIdx, endIdx, scaleFactor)
113
-
114
- val x = i.toFloat()
115
- val y = centerY - avgAmplitude
116
-
117
- if (firstPoint) {
118
- path.moveTo(x, y)
119
- firstPoint = false
120
- } else {
121
- path.lineTo(x, y)
122
- }
123
- }
124
- }
125
-
126
- private fun drawMirroredWaveform(
127
- path: Path,
128
- audioData: FloatArray,
129
- width: Int,
130
- centerY: Float,
131
- pointsPerSegment: Float,
132
- scaleFactor: Float
133
- ) {
134
- for (i in width - 1 downTo 0) {
135
- val startIdx = (i * pointsPerSegment).toInt()
136
- val endIdx = ((i + 1) * pointsPerSegment).toInt().coerceAtMost(audioData.size)
137
-
138
- val avgAmplitude = calculateAverageAmplitude(audioData, startIdx, endIdx, scaleFactor)
139
- path.lineTo(i.toFloat(), centerY + avgAmplitude)
140
- }
141
- path.close()
142
- }
143
-
144
- private fun calculateAverageAmplitude(
145
- audioData: FloatArray,
146
- startIdx: Int,
147
- endIdx: Int,
148
- scaleFactor: Float
149
- ): Float {
150
- return if (endIdx > startIdx) {
151
- audioData.slice(startIdx until endIdx)
152
- .map { abs(it) }
153
- .average()
154
- .toFloat() * scaleFactor
155
- } else {
156
- 0f
157
- }
158
- }
159
- }
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
- android:width="24dp"
4
- android:height="24dp"
5
- android:viewportWidth="24"
6
- android:viewportHeight="24">
7
- <path
8
- android:fillColor="#FFFFFF"
9
- android:pathData="M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2ZM12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20Z"/>
10
- <path
11
- android:fillColor="#FFFFFF"
12
- android:pathData="M12,17L12,7"/>
13
- <path
14
- android:fillColor="#FFFFFF"
15
- android:pathData="M7,12L17,12"/>
16
- </vector>
@@ -1,13 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
- android:width="24dp"
4
- android:height="24dp"
5
- android:viewportWidth="24"
6
- android:viewportHeight="24">
7
- <path
8
- android:fillColor="#FFFFFF"
9
- android:pathData="M12,14c1.66,0 3,-1.34 3,-3V5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6C9,12.66 10.34,14 12,14z"/>
10
- <path
11
- android:fillColor="#FFFFFF"
12
- android:pathData="M17,11c0,2.76 -2.24,5 -5,5s-5,-2.24 -5,-5H5c0,3.53 2.61,6.43 6,6.92V21h2v-3.08c3.39,-0.49 6,-3.39 6,-6.92H17z"/>
13
- </vector>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
- android:width="24dp"
4
- android:height="24dp"
5
- android:viewportWidth="24"
6
- android:viewportHeight="24">
7
- <path
8
- android:fillColor="#FFFFFF"
9
- android:pathData="M6,4h4v16H6zM14,4h4v16h-4z"/>
10
- </vector>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
- android:width="24dp"
4
- android:height="24dp"
5
- android:viewportWidth="24"
6
- android:viewportHeight="24">
7
- <path
8
- android:fillColor="#FFFFFF"
9
- android:pathData="M8,5v14l11,-7z"/>
10
- </vector>
@@ -1,10 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
- android:width="24dp"
4
- android:height="24dp"
5
- android:viewportWidth="24"
6
- android:viewportHeight="24">
7
- <path
8
- android:fillColor="#FFFFFF"
9
- android:pathData="M6,6h12v12H6z"/>
10
- </vector>
@@ -1,37 +0,0 @@
1
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
- android:id="@+id/notification_layout"
3
- android:layout_width="match_parent"
4
- android:layout_height="wrap_content"
5
- android:gravity="center"
6
- android:orientation="vertical"
7
- android:padding="8dp">
8
-
9
- <TextView
10
- android:id="@+id/notification_title"
11
- android:layout_width="wrap_content"
12
- android:layout_height="wrap_content"
13
- android:layout_marginBottom="4dp"
14
- android:textSize="16sp"
15
- android:textStyle="bold" />
16
-
17
- <TextView
18
- android:id="@+id/notification_text"
19
- android:layout_width="wrap_content"
20
- android:layout_height="wrap_content"
21
- android:layout_marginBottom="4dp"
22
- android:textSize="14sp" />
23
-
24
- <ImageView
25
- android:id="@+id/notification_waveform"
26
- android:layout_width="match_parent"
27
- android:layout_height="64dp"
28
- android:scaleType="fitCenter" />
29
-
30
- <TextView
31
- android:id="@+id/notification_duration"
32
- android:layout_width="wrap_content"
33
- android:layout_height="wrap_content"
34
- android:layout_marginTop="4dp"
35
- android:textSize="14sp" />
36
-
37
- </LinearLayout>
@@ -1,56 +0,0 @@
1
- package net.siteed.audiostream
2
-
3
- import org.junit.Test
4
- import org.junit.Assert.*
5
-
6
- class AudioProcessorTest {
7
-
8
- private val sampleRate = 44100
9
- private val channels = 1
10
- private val encoding = "pcm_16bit"
11
- private val pointsPerSecond = 1000
12
- private val algorithm = "rms"
13
- private val features = mapOf("rms" to true, "zcr" to true)
14
-
15
- private val recordingConfig = RecordingConfig(
16
- sampleRate = sampleRate,
17
- channels = channels,
18
- encoding = encoding,
19
- interval = 1000,
20
- enableProcessing = true,
21
- pointsPerSecond = pointsPerSecond,
22
- algorithm = algorithm,
23
- features = features
24
- )
25
-
26
- private val audioProcessor = AudioProcessor()
27
-
28
- @Test
29
- fun testProcessAudioData() {
30
- val data = generateSineWave(440.0, sampleRate, 2.0)
31
-
32
- val result = audioProcessor.processAudioData(data, recordingConfig)
33
-
34
- assertNotNull(result)
35
- assertEquals(pointsPerSecond, result.pointsPerSecond)
36
- assertEquals((data.size / sampleRate) * 1000, result.durationMs.toInt())
37
- assertEquals(16, result.bitDepth)
38
- assertEquals(channels, result.numberOfChannels)
39
- assertEquals(sampleRate, result.sampleRate.toInt())
40
- }
41
-
42
- // Helper function to generate a sine wave
43
- private fun generateSineWave(frequency: Double, sampleRate: Int, durationSeconds: Double): ByteArray {
44
- val numSamples = (sampleRate * durationSeconds).toInt()
45
- val output = ByteArray(numSamples * 2) // 16-bit PCM
46
-
47
- for (i in 0 until numSamples) {
48
- val time = i / sampleRate.toDouble()
49
- val amplitude = (Math.sin(2.0 * Math.PI * frequency * time) * 32767).toInt()
50
- output[i * 2] = (amplitude and 0xff).toByte()
51
- output[i * 2 + 1] = ((amplitude shr 8) and 0xff).toByte()
52
- }
53
-
54
- return output
55
- }
56
- }
package/app.plugin.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./plugin/build')
@@ -1,179 +0,0 @@
1
- import { BitDepth, ConsoleLike } from '../ExpoAudioStream.types';
2
- /**
3
- * Represents the configuration for decoding audio data.
4
- */
5
- export interface DecodingConfig {
6
- /** Target sample rate for decoded audio (Android and Web) */
7
- targetSampleRate?: number;
8
- /** Target number of channels (Android and Web) */
9
- targetChannels?: number;
10
- /** Target bit depth (Android and Web) */
11
- targetBitDepth?: BitDepth;
12
- /** Whether to normalize audio levels (Android and Web) */
13
- normalizeAudio?: boolean;
14
- }
15
- /**
16
- * Represents speech-related features extracted from audio.
17
- */
18
- export interface SpeechFeatures {
19
- isActive: boolean;
20
- speakerId?: number;
21
- }
22
- /**
23
- * Represents various audio features extracted from an audio signal.
24
- */
25
- export interface AudioFeatures {
26
- energy?: number;
27
- mfcc?: number[];
28
- rms?: number;
29
- minAmplitude?: number;
30
- maxAmplitude?: number;
31
- zcr?: number;
32
- spectralCentroid?: number;
33
- spectralFlatness?: number;
34
- spectralRolloff?: number;
35
- spectralBandwidth?: number;
36
- chromagram?: number[];
37
- tempo?: number;
38
- hnr?: number;
39
- melSpectrogram?: number[];
40
- spectralContrast?: number[];
41
- tonnetz?: number[];
42
- pitch?: number;
43
- crc32?: number;
44
- }
45
- /**
46
- * Options to specify which audio features to extract.
47
- */
48
- export interface AudioFeaturesOptions {
49
- energy?: boolean;
50
- mfcc?: boolean;
51
- rms?: boolean;
52
- zcr?: boolean;
53
- spectralCentroid?: boolean;
54
- spectralFlatness?: boolean;
55
- spectralRolloff?: boolean;
56
- spectralBandwidth?: boolean;
57
- chromagram?: boolean;
58
- tempo?: boolean;
59
- hnr?: boolean;
60
- melSpectrogram?: boolean;
61
- spectralContrast?: boolean;
62
- tonnetz?: boolean;
63
- pitch?: boolean;
64
- crc32?: boolean;
65
- }
66
- /**
67
- * Represents a single data point in the audio analysis.
68
- */
69
- export interface DataPoint {
70
- id: number;
71
- amplitude: number;
72
- rms: number;
73
- dB: number;
74
- silent: boolean;
75
- features?: AudioFeatures;
76
- speech?: SpeechFeatures;
77
- startTime?: number;
78
- endTime?: number;
79
- startPosition?: number;
80
- endPosition?: number;
81
- samples?: number;
82
- }
83
- /**
84
- * Represents the complete data from the audio analysis.
85
- */
86
- export interface AudioAnalysis {
87
- segmentDurationMs: number;
88
- durationMs: number;
89
- bitDepth: number;
90
- samples: number;
91
- numberOfChannels: number;
92
- sampleRate: number;
93
- dataPoints: DataPoint[];
94
- amplitudeRange: {
95
- min: number;
96
- max: number;
97
- };
98
- rmsRange: {
99
- min: number;
100
- max: number;
101
- };
102
- speechAnalysis?: {
103
- speakerChanges: {
104
- timestamp: number;
105
- speakerId: number;
106
- }[];
107
- };
108
- }
109
- /**
110
- * Options for specifying a time range within an audio file.
111
- */
112
- export interface AudioRangeOptions {
113
- /** Start time in milliseconds */
114
- startTimeMs?: number;
115
- /** End time in milliseconds */
116
- endTimeMs?: number;
117
- }
118
- /**
119
- * Options for generating a quick preview of audio waveform.
120
- * This is optimized for UI rendering with a specified number of points.
121
- */
122
- export interface PreviewOptions extends AudioRangeOptions {
123
- /** URI of the audio file to analyze */
124
- fileUri: string;
125
- /**
126
- * Total number of points to generate for the preview.
127
- * @default 100
128
- */
129
- numberOfPoints?: number;
130
- /**
131
- * Optional logger for debugging.
132
- */
133
- logger?: ConsoleLike;
134
- /**
135
- * Optional configuration for decoding the audio file.
136
- * Defaults to:
137
- * - targetSampleRate: undefined (keep original)
138
- * - targetChannels: undefined (keep original)
139
- * - targetBitDepth: 16
140
- * - normalizeAudio: false
141
- */
142
- decodingOptions?: DecodingConfig;
143
- }
144
- /**
145
- * Options for mel-spectrogram extraction
146
- *
147
- * @experimental This feature is experimental and currently only available on Android.
148
- * The API may change in future versions.
149
- */
150
- export interface ExtractMelSpectrogramOptions {
151
- fileUri?: string;
152
- arrayBuffer?: ArrayBuffer;
153
- windowSizeMs: number;
154
- hopLengthMs: number;
155
- nMels: number;
156
- fMin?: number;
157
- fMax?: number;
158
- windowType?: 'hann' | 'hamming';
159
- normalize?: boolean;
160
- logScale?: boolean;
161
- decodingOptions?: DecodingConfig;
162
- startTimeMs?: number;
163
- endTimeMs?: number;
164
- logger?: ConsoleLike;
165
- }
166
- /**
167
- * Return type for mel spectrogram extraction
168
- *
169
- * @experimental This feature is experimental and currently only available on Android.
170
- * The API may change in future versions.
171
- */
172
- export interface MelSpectrogram {
173
- spectrogram: number[][];
174
- sampleRate: number;
175
- nMels: number;
176
- timeSteps: number;
177
- durationMs: number;
178
- }
179
- //# sourceMappingURL=AudioAnalysis.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AudioAnalysis.types.d.ts","sourceRoot":"","sources":["../../src/AudioAnalysis/AudioAnalysis.types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- // packages/expo-audio-stream/src/AudioAnalysis/AudioAnalysis.types.ts
2
- export {};
3
- //# sourceMappingURL=AudioAnalysis.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AudioAnalysis.types.js","sourceRoot":"","sources":["../../src/AudioAnalysis/AudioAnalysis.types.ts"],"names":[],"mappings":"AAAA,sEAAsE","sourcesContent":["// packages/expo-audio-stream/src/AudioAnalysis/AudioAnalysis.types.ts\n\nimport { BitDepth, ConsoleLike } from '../ExpoAudioStream.types'\n\n/**\n * Represents the configuration for decoding audio data.\n */\nexport interface DecodingConfig {\n /** Target sample rate for decoded audio (Android and Web) */\n targetSampleRate?: number\n /** Target number of channels (Android and Web) */\n targetChannels?: number\n /** Target bit depth (Android and Web) */\n targetBitDepth?: BitDepth\n /** Whether to normalize audio levels (Android and Web) */\n normalizeAudio?: boolean\n}\n\n/**\n * Represents speech-related features extracted from audio.\n */\nexport interface SpeechFeatures {\n isActive: boolean // Whether speech is detected in this segment\n speakerId?: number // Optional speaker identification\n // Could add more speech-related features here like:\n // confidence: number\n // language?: string\n // sentiment?: number\n // etc.\n}\n\n/**\n * Represents various audio features extracted from an audio signal.\n */\nexport interface AudioFeatures {\n energy?: number // The infinite integral of the squared signal, representing the overall energy of the audio.\n mfcc?: number[] // Mel-frequency cepstral coefficients, describing the short-term power spectrum of a sound.\n rms?: number // Root mean square value, indicating the amplitude of the audio signal.\n minAmplitude?: number // Minimum amplitude value in the audio signal.\n maxAmplitude?: number // Maximum amplitude value in the audio signal.\n zcr?: number // Zero-crossing rate, indicating the rate at which the signal changes sign.\n spectralCentroid?: number // The center of mass of the spectrum, indicating the brightness of the sound.\n spectralFlatness?: number // Measure of the flatness of the spectrum, indicating how noise-like the signal is.\n spectralRolloff?: number // The frequency below which a specified percentage (usually 85%) of the total spectral energy lies.\n spectralBandwidth?: number // The width of the spectrum, indicating the range of frequencies present.\n chromagram?: number[] // Chromagram, representing the 12 different pitch classes of the audio.\n tempo?: number // Estimated tempo of the audio signal, measured in beats per minute (BPM).\n hnr?: number // Harmonics-to-noise ratio, indicating the proportion of harmonics to noise in the audio signal.\n melSpectrogram?: number[] // Mel-scaled spectrogram representation of the audio.\n spectralContrast?: number[] // Spectral contrast features representing the difference between peaks and valleys.\n tonnetz?: number[] // Tonal network features representing harmonic relationships.\n pitch?: number // Pitch of the audio signal, measured in Hertz (Hz).\n crc32?: number // crc32 checksum of the audio signal, used to verify the integrity of the audio.\n}\n\n/**\n * Options to specify which audio features to extract.\n */\nexport interface AudioFeaturesOptions {\n energy?: boolean\n mfcc?: boolean\n rms?: boolean\n zcr?: boolean\n spectralCentroid?: boolean\n spectralFlatness?: boolean\n spectralRolloff?: boolean\n spectralBandwidth?: boolean\n chromagram?: boolean\n tempo?: boolean\n hnr?: boolean\n melSpectrogram?: boolean\n spectralContrast?: boolean\n tonnetz?: boolean\n pitch?: boolean\n crc32?: boolean\n}\n\n/**\n * Represents a single data point in the audio analysis.\n */\nexport interface DataPoint {\n id: number\n amplitude: number // Peak amplitude for the segment\n rms: number // Root mean square value\n dB: number // dBFS (decibels relative to full scale) computed from RMS value\n silent: boolean // Always computed\n features?: AudioFeatures\n speech?: SpeechFeatures\n startTime?: number\n endTime?: number\n // start / end position in bytes\n startPosition?: number\n endPosition?: number\n // number of audio samples for this point (samples size depends on bit depth)\n samples?: number\n}\n\n/**\n * Represents the complete data from the audio analysis.\n */\nexport interface AudioAnalysis {\n segmentDurationMs: number // Duration of each segment in milliseconds\n durationMs: number // Duration of the audio in milliseconds\n bitDepth: number // Bit depth of the audio\n samples: number // Size of the audio in bytes\n numberOfChannels: number // Number of audio channels\n sampleRate: number // Sample rate of the audio\n dataPoints: DataPoint[] // Array of data points from the analysis.\n amplitudeRange: {\n min: number\n max: number\n }\n rmsRange: {\n min: number\n max: number\n }\n // TODO: speaker changes into a broader speech analysis section\n speechAnalysis?: {\n speakerChanges: {\n timestamp: number\n speakerId: number\n }[]\n // Could add more speech analysis data here like:\n // dominantSpeaker?: number\n // totalSpeechDuration?: number\n // speakerStats?: { [speakerId: number]: { duration: number, segments: number } }\n }\n}\n\n/**\n * Options for specifying a time range within an audio file.\n */\nexport interface AudioRangeOptions {\n /** Start time in milliseconds */\n startTimeMs?: number\n /** End time in milliseconds */\n endTimeMs?: number\n}\n\n/**\n * Options for generating a quick preview of audio waveform.\n * This is optimized for UI rendering with a specified number of points.\n */\nexport interface PreviewOptions extends AudioRangeOptions {\n /** URI of the audio file to analyze */\n fileUri: string\n /**\n * Total number of points to generate for the preview.\n * @default 100\n */\n numberOfPoints?: number\n /**\n * Optional logger for debugging.\n */\n logger?: ConsoleLike\n /**\n * Optional configuration for decoding the audio file.\n * Defaults to:\n * - targetSampleRate: undefined (keep original)\n * - targetChannels: undefined (keep original)\n * - targetBitDepth: 16\n * - normalizeAudio: false\n */\n decodingOptions?: DecodingConfig\n}\n\n/**\n * Options for mel-spectrogram extraction\n * \n * @experimental This feature is experimental and currently only available on Android.\n * The API may change in future versions.\n */\nexport interface ExtractMelSpectrogramOptions {\n fileUri?: string // Path to audio file\n arrayBuffer?: ArrayBuffer // Raw audio buffer\n windowSizeMs: number // Window size in ms (e.g., 25)\n hopLengthMs: number // Hop length in ms (e.g., 10)\n nMels: number // Number of mel filters (e.g., 60)\n fMin?: number // Min frequency (default: 0)\n fMax?: number // Max frequency (default: sampleRate / 2)\n windowType?: 'hann' | 'hamming' // Window function (default: 'hann')\n normalize?: boolean // Mean normalization (default: false)\n logScale?: boolean // Log scaling of mel energies (default: true)\n decodingOptions?: DecodingConfig // Audio decoding settings\n startTimeMs?: number // Optional start time\n endTimeMs?: number // Optional end time\n logger?: ConsoleLike\n}\n\n/**\n * Return type for mel spectrogram extraction\n * \n * @experimental This feature is experimental and currently only available on Android.\n * The API may change in future versions.\n */\nexport interface MelSpectrogram {\n spectrogram: number[][] // 2D array [time][mel]\n sampleRate: number // Audio sample rate\n nMels: number // Number of mel filters\n timeSteps: number // Number of time frames\n durationMs: number // Audio duration in ms\n}\n"]}
@@ -1,68 +0,0 @@
1
- import { ConsoleLike } from '../ExpoAudioStream.types';
2
- import { AudioAnalysis, AudioFeaturesOptions, DecodingConfig } from './AudioAnalysis.types';
3
- import { WavFileInfo } from '../utils/getWavFileInfo';
4
- export interface ExtractWavAudioAnalysisProps {
5
- fileUri?: string;
6
- wavMetadata?: WavFileInfo;
7
- arrayBuffer?: ArrayBuffer;
8
- bitDepth?: number;
9
- durationMs?: number;
10
- sampleRate?: number;
11
- numberOfChannels?: number;
12
- position?: number;
13
- length?: number;
14
- segmentDurationMs?: number;
15
- features?: AudioFeaturesOptions;
16
- featuresExtratorUrl?: string;
17
- logger?: ConsoleLike;
18
- decodingOptions?: DecodingConfig;
19
- }
20
- interface BaseExtractOptions {
21
- fileUri?: string;
22
- arrayBuffer?: ArrayBuffer;
23
- /**
24
- * Duration of each analysis segment in milliseconds. Defaults to 100ms if not specified.
25
- */
26
- segmentDurationMs?: number;
27
- features?: AudioFeaturesOptions;
28
- decodingOptions?: DecodingConfig;
29
- logger?: ConsoleLike;
30
- }
31
- interface TimeRangeOptions extends BaseExtractOptions {
32
- startTimeMs?: number;
33
- endTimeMs?: number;
34
- position?: never;
35
- length?: never;
36
- }
37
- interface ByteRangeOptions extends BaseExtractOptions {
38
- position?: number;
39
- length?: number;
40
- startTimeMs?: never;
41
- endTimeMs?: never;
42
- }
43
- /**
44
- * Options for extracting audio analysis.
45
- * - For time-based analysis, provide `startTimeMs` and `endTimeMs`.
46
- * - For byte-based analysis, provide `position` and `length`.
47
- * - Do not mix time and byte ranges.
48
- */
49
- export type ExtractAudioAnalysisProps = TimeRangeOptions | ByteRangeOptions;
50
- /**
51
- * Extracts detailed audio analysis from the specified audio file or buffer.
52
- * Supports either time-based or byte-based ranges for flexibility in analysis.
53
- *
54
- * @param props - The options for extraction, including file URI, ranges, and decoding settings.
55
- * @returns A promise that resolves to the audio analysis data.
56
- * @throws {Error} If both time and byte ranges are provided or if required parameters are missing.
57
- */
58
- export declare function extractAudioAnalysis(props: ExtractAudioAnalysisProps): Promise<AudioAnalysis>;
59
- /**
60
- * Analyzes WAV files without decoding, preserving original PCM values.
61
- * Use this function when you need to ensure the analysis matches other software by avoiding any transformations.
62
- *
63
- * @param props - The options for WAV analysis, including file URI and range.
64
- * @returns A promise that resolves to the audio analysis data.
65
- */
66
- export declare const extractRawWavAnalysis: ({ fileUri, segmentDurationMs, arrayBuffer, bitDepth, durationMs, sampleRate, numberOfChannels, features, logger, position, length, }: ExtractWavAudioAnalysisProps) => Promise<AudioAnalysis>;
67
- export {};
68
- //# sourceMappingURL=extractAudioAnalysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractAudioAnalysis.d.ts","sourceRoot":"","sources":["../../src/AudioAnalysis/extractAudioAnalysis.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAkB,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAerE,MAAM,WAAW,4BAA4B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,cAAc,CAAA;CACnC;AAGD,UAAU,kBAAkB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB;AAGD,UAAU,gBAAiB,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,SAAS,CAAC,EAAE,KAAK,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE3E;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,yBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CAkHxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,yIAY/B,4BAA4B,KAAG,QAAQ,aAAa,CAkGtD,CAAA"}