react-native-davoice-tts 1.0.360 → 1.0.362

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 (17) hide show
  1. package/TTSRNBridge.podspec +1 -1
  2. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/DavoiceTTS +0 -0
  3. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Headers/DavoiceTTS-Swift.h +1 -1
  4. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.abi.json +423 -388
  5. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  6. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/DavoiceTTS +0 -0
  7. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Headers/DavoiceTTS-Swift.h +2 -2
  8. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.abi.json +423 -388
  9. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  10. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.abi.json +423 -388
  11. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  12. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeDirectory +0 -0
  13. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeRequirements-1 +0 -0
  14. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeResources +21 -21
  15. package/package.json +1 -1
  16. package/speech/audioRoutingConfig.md +67 -3
  17. package/speech/index.ts +17 -0
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Headers/DavoiceTTS-Swift.h</key>
8
8
  <data>
9
- 0y4wnEptFaUKvETRTCKi7FfPd8s=
9
+ 6FhZ7bcv5mSNZxa0RquARZ5WEKA=
10
10
  </data>
11
11
  <key>Info.plist</key>
12
12
  <data>
@@ -14,7 +14,7 @@
14
14
  </data>
15
15
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
16
16
  <data>
17
- MY66E6WyBVXIl9BnfupeiL1jepk=
17
+ FrPVq+Vnd+C1TCs8p2QBSh7kcZ0=
18
18
  </data>
19
19
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
20
20
  <data>
@@ -22,7 +22,7 @@
22
22
  </data>
23
23
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
24
24
  <data>
25
- yG3MjSM6H1RKr50XigfG1LjX3LI=
25
+ qK/Bas4V4+n3sU5V1pwkQ7yjp+g=
26
26
  </data>
27
27
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
28
28
  <data>
@@ -30,11 +30,11 @@
30
30
  </data>
31
31
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
32
32
  <data>
33
- I0ZZs1/VTcCYET0HUBB4e1m9NIQ=
33
+ 235PinAV5W/iFFGdXZbvDhdtHmk=
34
34
  </data>
35
35
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
36
36
  <data>
37
- MY66E6WyBVXIl9BnfupeiL1jepk=
37
+ FrPVq+Vnd+C1TCs8p2QBSh7kcZ0=
38
38
  </data>
39
39
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
40
40
  <data>
@@ -42,7 +42,7 @@
42
42
  </data>
43
43
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
44
44
  <data>
45
- ET2PbztHDBA5E1oZoGnvMeMf7Hw=
45
+ hKUkvVh5OObgqNhNkolw08nNpqE=
46
46
  </data>
47
47
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
48
48
  <data>
@@ -50,7 +50,7 @@
50
50
  </data>
51
51
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
52
52
  <data>
53
- JxTbIAPQqoY+QChG6blPBPcQe3I=
53
+ bgP7BCBNSATwzYvX00Nl2ba8N30=
54
54
  </data>
55
55
  <key>Modules/module.modulemap</key>
56
56
  <data>
@@ -63,22 +63,22 @@
63
63
  <dict>
64
64
  <key>hash</key>
65
65
  <data>
66
- 0y4wnEptFaUKvETRTCKi7FfPd8s=
66
+ 6FhZ7bcv5mSNZxa0RquARZ5WEKA=
67
67
  </data>
68
68
  <key>hash2</key>
69
69
  <data>
70
- rr1pVbVt9W7SKsyOrFpwex8/aZNUyBGGs16Q2Qadoac=
70
+ RJHuR7+/aZIzEqHR6R8QQ0DeYjKM8cKtcSNaXQ4sbg4=
71
71
  </data>
72
72
  </dict>
73
73
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
74
74
  <dict>
75
75
  <key>hash</key>
76
76
  <data>
77
- MY66E6WyBVXIl9BnfupeiL1jepk=
77
+ FrPVq+Vnd+C1TCs8p2QBSh7kcZ0=
78
78
  </data>
79
79
  <key>hash2</key>
80
80
  <data>
81
- MLoKKgw4AYadSd11qBjHKKQzvkcpIvtr7OA/UIRwG24=
81
+ ErEFHyUsbVBMPtQRVFVuyBXYNe1gDmPOL1fuGtU0zKo=
82
82
  </data>
83
83
  </dict>
84
84
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
@@ -96,11 +96,11 @@
96
96
  <dict>
97
97
  <key>hash</key>
98
98
  <data>
99
- yG3MjSM6H1RKr50XigfG1LjX3LI=
99
+ qK/Bas4V4+n3sU5V1pwkQ7yjp+g=
100
100
  </data>
101
101
  <key>hash2</key>
102
102
  <data>
103
- fzy/aKiRSse5L9MDay6voxPyUjm17gfda323ob48Ohs=
103
+ 9IH1S1pn4YKVr1UO7kbc60iOvf5Zrj6nbNat0lSHTes=
104
104
  </data>
105
105
  </dict>
106
106
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
@@ -118,22 +118,22 @@
118
118
  <dict>
119
119
  <key>hash</key>
120
120
  <data>
121
- I0ZZs1/VTcCYET0HUBB4e1m9NIQ=
121
+ 235PinAV5W/iFFGdXZbvDhdtHmk=
122
122
  </data>
123
123
  <key>hash2</key>
124
124
  <data>
125
- IQXV0Ijhyd+kB+sGiji73vddv9kY1Z+H+GeEHgpPS1w=
125
+ rW0+wa483eUxa3t5TV/3VEdO5PAKc7Tddd8e7SsETmk=
126
126
  </data>
127
127
  </dict>
128
128
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
129
129
  <dict>
130
130
  <key>hash</key>
131
131
  <data>
132
- MY66E6WyBVXIl9BnfupeiL1jepk=
132
+ FrPVq+Vnd+C1TCs8p2QBSh7kcZ0=
133
133
  </data>
134
134
  <key>hash2</key>
135
135
  <data>
136
- MLoKKgw4AYadSd11qBjHKKQzvkcpIvtr7OA/UIRwG24=
136
+ ErEFHyUsbVBMPtQRVFVuyBXYNe1gDmPOL1fuGtU0zKo=
137
137
  </data>
138
138
  </dict>
139
139
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
@@ -151,11 +151,11 @@
151
151
  <dict>
152
152
  <key>hash</key>
153
153
  <data>
154
- ET2PbztHDBA5E1oZoGnvMeMf7Hw=
154
+ hKUkvVh5OObgqNhNkolw08nNpqE=
155
155
  </data>
156
156
  <key>hash2</key>
157
157
  <data>
158
- w8ot8k5qpRMwzbfgbSskl1Fvf/6+z+fkBQ/yn5B3UII=
158
+ d/179D6qtHuBsr8yiDl2SexIwWi8ArqdhzYvojT00kM=
159
159
  </data>
160
160
  </dict>
161
161
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
@@ -173,11 +173,11 @@
173
173
  <dict>
174
174
  <key>hash</key>
175
175
  <data>
176
- JxTbIAPQqoY+QChG6blPBPcQe3I=
176
+ bgP7BCBNSATwzYvX00Nl2ba8N30=
177
177
  </data>
178
178
  <key>hash2</key>
179
179
  <data>
180
- hXvsfFN1DMvUhFZqXnZMoygdgMgDm2SSpNCKkijh+EU=
180
+ hXeL5TIFZ7a13fhKUjuvQA7jSZ+9eilnBz5Pshp0lXQ=
181
181
  </data>
182
182
  </dict>
183
183
  <key>Modules/module.modulemap</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-davoice-tts",
3
- "version": "1.0.360",
3
+ "version": "1.0.362",
4
4
  "description": "tts library for React Native",
5
5
  "main": "tts/index.js",
6
6
  "types": "tts/index.d.ts",
@@ -74,6 +74,70 @@ In this fallback position, `none` forces the ordinary HFP-capable category
74
74
  policy and then clears the preferred input. HFP may reduce Bluetooth output
75
75
  quality.
76
76
 
77
- `bluetoothHighQualityRecording` requires iOS 26 and `mode: "default"`. Apply the
78
- same input policy to `WhenPlayingAudio.onPlay` if TTS/WAV playback should retain
79
- the selected microphone route.
77
+ `bluetoothHighQualityRecording` requires iOS 26 and `mode: "default"`.
78
+ `WhenPlayingAudio.onPlay` and `STTDuckingConfig.onUnpause` are temporary
79
+ ducking markers/deltas: native code retains the selected regular hardware and
80
+ input route and adds `duckOthers`.
81
+
82
+ ## Debounced Unducking Between Playback Calls
83
+
84
+ `WhenPlayingAudio.msBeforeUnduck` controls how long the native package keeps
85
+ the temporary playback session after the physical queue becomes empty:
86
+
87
+ ```ts
88
+ const audioRoutingConfig: AudioRoutingConfig = {
89
+ default: regularRoute,
90
+ WhenPlayingAudio: {
91
+ onPlay: duckedPlaybackRoute,
92
+ onFinishPlaying: {
93
+ ...regularRoute,
94
+ notifyOthers: true,
95
+ },
96
+ msBeforeUnduck: 3000,
97
+ },
98
+ };
99
+ ```
100
+
101
+ The default is `3000` milliseconds whenever `WhenPlayingAudio.onPlay` or
102
+ `WhenPlayingAudio.onFinishPlaying` exists. A new `speak()`, `playWav()`, or
103
+ other queued playback request during that quiet period cancels and later
104
+ restarts the deadline, so consecutive sounds share one ducking lifecycle.
105
+ Logical playback completion events still fire when audio finishes; they do not
106
+ wait for the unduck deadline. When the deadline finally expires, native code
107
+ performs `notifyOthersOnDeactivation` when configured, restores regular
108
+ routing, and reactivates STT/wakeword under that regular session. Set the value
109
+ to `0` to restore immediately.
110
+
111
+ ## Duck While STT Is Unpaused
112
+
113
+ `STTDuckingConfig` uses the same native lease scheduler as playback:
114
+
115
+ ```ts
116
+ const audioRoutingConfig: AudioRoutingConfig = {
117
+ default: regularRoute,
118
+ WhenPlayingAudio: {
119
+ onPlay: { options: ['duckOthers'] },
120
+ onFinishPlaying: { notifyOthers: true },
121
+ msBeforeUnduck: 3000,
122
+ },
123
+ STTDuckingConfig: {
124
+ onUnpause: { options: ['duckOthers'] },
125
+ onPause: { notifyOthers: true },
126
+ msBeforeUnduck: 3000,
127
+ },
128
+ };
129
+ ```
130
+
131
+ An unpaused STT session holds its lease indefinitely, so no unduck deadline
132
+ runs while recognition remains unpaused. Pausing STT releases its lease and
133
+ starts its quiet-period deadline only if playback is also idle. Likewise,
134
+ playback finishing cannot unduck while STT remains unpaused. If STT starts
135
+ first, playback joins its ducked session; if playback starts first, STT joins
136
+ the playback session without an intermediate route restore. New playback or an
137
+ STT unpause cancels a pending deadline. Nested lite-pause calls change the lease
138
+ only on the real unpaused-to-paused and paused-to-unpaused transitions.
139
+
140
+ `STTDuckingConfig.msBeforeUnduck` defaults to `3000` milliseconds when the
141
+ section contains `onUnpause` or `onPause`. Set it to `0` for immediate
142
+ restoration once STT and playback are both inactive. Omitting
143
+ `STTDuckingConfig` preserves the previous STT routing behavior.
package/speech/index.ts CHANGED
@@ -142,6 +142,23 @@ export type AudioRoutingConfig = {
142
142
  WhenPlayingAudio?: {
143
143
  onPlay?: RouteConfigEntry;
144
144
  onFinishPlaying?: RouteConfigEntry;
145
+ /**
146
+ * Quiet period after the playback queue drains before restoring regular
147
+ * routing and notifying other audio. New playback restarts the deadline.
148
+ * Defaults to 3000 ms. Use 0 for immediate restoration.
149
+ */
150
+ msBeforeUnduck?: number;
151
+ };
152
+ /** Optional temporary ducking policy while native STT is unpaused. */
153
+ STTDuckingConfig?: {
154
+ onUnpause?: RouteConfigEntry;
155
+ onPause?: RouteConfigEntry;
156
+ /**
157
+ * Quiet period after STT pauses before restoring regular routing and
158
+ * notifying other audio. Playback and STT share one native scheduler.
159
+ * Defaults to 3000 ms. Use 0 for immediate restoration.
160
+ */
161
+ msBeforeUnduck?: number;
145
162
  };
146
163
  };
147
164