react-native-davoice-tts 1.0.357 → 1.0.359

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 (27) hide show
  1. package/TTSRNBridge.podspec +1 -1
  2. package/android/libs/com/davoice/tts/1.0.0/tts-1.0.0.aar +0 -0
  3. package/android/libs/com/davoice/tts/1.0.0/tts-1.0.0.aar.md5 +1 -1
  4. package/android/libs/com/davoice/tts/1.0.0/tts-1.0.0.aar.sha1 +1 -1
  5. package/ios/SpeechBridge/SpeechBridge.m +30 -0
  6. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/DavoiceTTS +0 -0
  7. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Headers/DavoiceTTS-Swift.h +10 -1
  8. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.abi.json +931 -362
  9. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.private.swiftinterface +12 -0
  10. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  11. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios.swiftinterface +12 -0
  12. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/DavoiceTTS +0 -0
  13. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Headers/DavoiceTTS-Swift.h +20 -2
  14. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.abi.json +931 -362
  15. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +12 -0
  16. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  17. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftinterface +12 -0
  18. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.abi.json +931 -362
  19. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +12 -0
  20. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  21. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +12 -0
  22. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeDirectory +0 -0
  23. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeRequirements-1 +0 -0
  24. package/ios/TTSRNBridge/DavoiceTTS.xcframework/ios-arm64_x86_64-simulator/DavoiceTTS.framework/_CodeSignature/CodeResources +33 -33
  25. package/ios/TTSRNBridge/libucd.xcframework/Info.plist +5 -5
  26. package/package.json +1 -1
  27. package/speech/index.ts +60 -0
@@ -22,12 +22,22 @@ public typealias IsEngineReady = () -> Swift.Bool
22
22
  public typealias useOnlyEnginePlayback = () -> Swift.Bool
23
23
  public typealias StopEnginePlayback = () -> Swift.Void
24
24
  public typealias CurrentEngineProvider = () -> AVFAudio.AVAudioEngine?
25
+ public typealias QuiesceEngineForAudioSessionCycle = () -> Swift.Bool
26
+ public typealias ResumeEngineAfterAudioSessionCycle = () -> Swift.Void
27
+ @_inheritsConvenienceInitializers @objc final public class DaVoiceAudioRoutingConfig : ObjectiveC.NSObject {
28
+ @objc public static func setAudioRoutingConfigJSONString(_ json: Swift.String) -> Swift.Bool
29
+ @objc public static func clearAudioRoutingConfig()
30
+ @objc override dynamic public init()
31
+ @objc deinit
32
+ }
25
33
  public enum AudioPlaybackHook {
26
34
  public static var engineScheduleFile: DavoiceTTS.EngineSchedule?
27
35
  public static var isEngineReady: DavoiceTTS.IsEngineReady?
28
36
  public static var useOnlyEnginePlayback: DavoiceTTS.useOnlyEnginePlayback?
29
37
  public static var stopEnginePlayback: DavoiceTTS.StopEnginePlayback?
30
38
  public static var currentEngine: DavoiceTTS.CurrentEngineProvider?
39
+ public static var quiesceEngineForAudioSessionCycle: DavoiceTTS.QuiesceEngineForAudioSessionCycle?
40
+ public static var resumeEngineAfterAudioSessionCycle: DavoiceTTS.ResumeEngineAfterAudioSessionCycle?
31
41
  public static var isMicPaused: (() -> Swift.Bool)?
32
42
  }
33
43
  @objc public protocol STTDelegate {
@@ -95,6 +105,8 @@ public enum AudioPlaybackHook {
95
105
  final public func notifyWhenURLFinishes(_ url: Foundation.URL, _ cb: @escaping () -> Swift.Void)
96
106
  final public var onItemDone: ((Foundation.URL) -> Swift.Void)?
97
107
  final public var onQueueEmpty: (() -> Swift.Void)?
108
+ final public func beginAudioProduction() -> Foundation.UUID
109
+ final public func endAudioProduction(_ token: Foundation.UUID)
98
110
  final public func enqueue(_ source: DavoiceTTS.SwiftSoundQueue.Source)
99
111
  final public func enqueueMany(_ sources: [DavoiceTTS.SwiftSoundQueue.Source])
100
112
  final public func stop()
@@ -22,12 +22,22 @@ public typealias IsEngineReady = () -> Swift.Bool
22
22
  public typealias useOnlyEnginePlayback = () -> Swift.Bool
23
23
  public typealias StopEnginePlayback = () -> Swift.Void
24
24
  public typealias CurrentEngineProvider = () -> AVFAudio.AVAudioEngine?
25
+ public typealias QuiesceEngineForAudioSessionCycle = () -> Swift.Bool
26
+ public typealias ResumeEngineAfterAudioSessionCycle = () -> Swift.Void
27
+ @_inheritsConvenienceInitializers @objc final public class DaVoiceAudioRoutingConfig : ObjectiveC.NSObject {
28
+ @objc public static func setAudioRoutingConfigJSONString(_ json: Swift.String) -> Swift.Bool
29
+ @objc public static func clearAudioRoutingConfig()
30
+ @objc override dynamic public init()
31
+ @objc deinit
32
+ }
25
33
  public enum AudioPlaybackHook {
26
34
  public static var engineScheduleFile: DavoiceTTS.EngineSchedule?
27
35
  public static var isEngineReady: DavoiceTTS.IsEngineReady?
28
36
  public static var useOnlyEnginePlayback: DavoiceTTS.useOnlyEnginePlayback?
29
37
  public static var stopEnginePlayback: DavoiceTTS.StopEnginePlayback?
30
38
  public static var currentEngine: DavoiceTTS.CurrentEngineProvider?
39
+ public static var quiesceEngineForAudioSessionCycle: DavoiceTTS.QuiesceEngineForAudioSessionCycle?
40
+ public static var resumeEngineAfterAudioSessionCycle: DavoiceTTS.ResumeEngineAfterAudioSessionCycle?
31
41
  public static var isMicPaused: (() -> Swift.Bool)?
32
42
  }
33
43
  @objc public protocol STTDelegate {
@@ -95,6 +105,8 @@ public enum AudioPlaybackHook {
95
105
  final public func notifyWhenURLFinishes(_ url: Foundation.URL, _ cb: @escaping () -> Swift.Void)
96
106
  final public var onItemDone: ((Foundation.URL) -> Swift.Void)?
97
107
  final public var onQueueEmpty: (() -> Swift.Void)?
108
+ final public func beginAudioProduction() -> Foundation.UUID
109
+ final public func endAudioProduction(_ token: Foundation.UUID)
98
110
  final public func enqueue(_ source: DavoiceTTS.SwiftSoundQueue.Source)
99
111
  final public func enqueueMany(_ sources: [DavoiceTTS.SwiftSoundQueue.Source])
100
112
  final public func stop()
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Headers/DavoiceTTS-Swift.h</key>
8
8
  <data>
9
- q5ie9yYtL5k3h0scZrImKmpHT5E=
9
+ 0y4wnEptFaUKvETRTCKi7FfPd8s=
10
10
  </data>
11
11
  <key>Info.plist</key>
12
12
  <data>
@@ -14,43 +14,43 @@
14
14
  </data>
15
15
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
16
16
  <data>
17
- MfqCV6wH+f/nsdepueb9o/fMafw=
17
+ 87hjXbS837rFjayDqqaQc5FnBwk=
18
18
  </data>
19
19
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
20
20
  <data>
21
- JRlH3xVkzY3tYFjKeUiNFuz9n9s=
21
+ ZyhlusTBZJR5nsRChtEKG7V69dw=
22
22
  </data>
23
23
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
24
24
  <data>
25
- ygdhAP42H1qHZ/nti//u5Q3aVBk=
25
+ yG3MjSM6H1RKr50XigfG1LjX3LI=
26
26
  </data>
27
27
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
28
28
  <data>
29
- JRlH3xVkzY3tYFjKeUiNFuz9n9s=
29
+ ZyhlusTBZJR5nsRChtEKG7V69dw=
30
30
  </data>
31
31
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
32
32
  <data>
33
- IwaVq2kt8vsxVDHuYmWyAjG2JgI=
33
+ gsALhsAeRthLWNfghd5y2ZJc5q4=
34
34
  </data>
35
35
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
36
36
  <data>
37
- MfqCV6wH+f/nsdepueb9o/fMafw=
37
+ 87hjXbS837rFjayDqqaQc5FnBwk=
38
38
  </data>
39
39
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
40
40
  <data>
41
- Ggyl+ZqWT4SUnSGmwcjPtcDoii0=
41
+ hW6EhBLa/ZxKj2KJAqSrwSxdzTU=
42
42
  </data>
43
43
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
44
44
  <data>
45
- nuxoFPsHLLMWfbvd8aVQj3GKTS0=
45
+ ET2PbztHDBA5E1oZoGnvMeMf7Hw=
46
46
  </data>
47
47
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
48
48
  <data>
49
- Ggyl+ZqWT4SUnSGmwcjPtcDoii0=
49
+ hW6EhBLa/ZxKj2KJAqSrwSxdzTU=
50
50
  </data>
51
51
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
52
52
  <data>
53
- 2w5fyQLSdRFzxsuGbs7hEzxosb8=
53
+ 1THCI0NR7Tb/6JPy7ZxkB0mHz74=
54
54
  </data>
55
55
  <key>Modules/module.modulemap</key>
56
56
  <data>
@@ -63,121 +63,121 @@
63
63
  <dict>
64
64
  <key>hash</key>
65
65
  <data>
66
- q5ie9yYtL5k3h0scZrImKmpHT5E=
66
+ 0y4wnEptFaUKvETRTCKi7FfPd8s=
67
67
  </data>
68
68
  <key>hash2</key>
69
69
  <data>
70
- BluiJDjW+FVfqYm39eBqNuqVTbrWqaLtpohZ3hBydxU=
70
+ rr1pVbVt9W7SKsyOrFpwex8/aZNUyBGGs16Q2Qadoac=
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
- MfqCV6wH+f/nsdepueb9o/fMafw=
77
+ 87hjXbS837rFjayDqqaQc5FnBwk=
78
78
  </data>
79
79
  <key>hash2</key>
80
80
  <data>
81
- KuiTqXLPPFFrf/LLB2gvua2kRxZGLPafMQ1/qMY0Fd4=
81
+ OejYVi2uKIpHsHsXj7RYJoaaF4lRzYc7BG089edtMd4=
82
82
  </data>
83
83
  </dict>
84
84
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
85
85
  <dict>
86
86
  <key>hash</key>
87
87
  <data>
88
- JRlH3xVkzY3tYFjKeUiNFuz9n9s=
88
+ ZyhlusTBZJR5nsRChtEKG7V69dw=
89
89
  </data>
90
90
  <key>hash2</key>
91
91
  <data>
92
- xT1UdQ1Ijy+rI6QLTku5/oUKtIUqOTpp36O3RA+smNA=
92
+ QuNi+7J4KpxecZNJStl/0QcnCA8MXVxNKBKMIUlZM+4=
93
93
  </data>
94
94
  </dict>
95
95
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
96
96
  <dict>
97
97
  <key>hash</key>
98
98
  <data>
99
- ygdhAP42H1qHZ/nti//u5Q3aVBk=
99
+ yG3MjSM6H1RKr50XigfG1LjX3LI=
100
100
  </data>
101
101
  <key>hash2</key>
102
102
  <data>
103
- PRznbYykzfNe/5e7KkJI3A7bfqx63K7qr+055a8lBJc=
103
+ fzy/aKiRSse5L9MDay6voxPyUjm17gfda323ob48Ohs=
104
104
  </data>
105
105
  </dict>
106
106
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
107
107
  <dict>
108
108
  <key>hash</key>
109
109
  <data>
110
- JRlH3xVkzY3tYFjKeUiNFuz9n9s=
110
+ ZyhlusTBZJR5nsRChtEKG7V69dw=
111
111
  </data>
112
112
  <key>hash2</key>
113
113
  <data>
114
- xT1UdQ1Ijy+rI6QLTku5/oUKtIUqOTpp36O3RA+smNA=
114
+ QuNi+7J4KpxecZNJStl/0QcnCA8MXVxNKBKMIUlZM+4=
115
115
  </data>
116
116
  </dict>
117
117
  <key>Modules/DavoiceTTS.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
118
118
  <dict>
119
119
  <key>hash</key>
120
120
  <data>
121
- IwaVq2kt8vsxVDHuYmWyAjG2JgI=
121
+ gsALhsAeRthLWNfghd5y2ZJc5q4=
122
122
  </data>
123
123
  <key>hash2</key>
124
124
  <data>
125
- tQ6a/OnzIbBjO53oENc4PEYuLEX9ED1sMPd4NBbkFrQ=
125
+ WA7exZZxTj9YHYemeJdNFlUVExpyv5BIW5LMSr/8gN0=
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
- MfqCV6wH+f/nsdepueb9o/fMafw=
132
+ 87hjXbS837rFjayDqqaQc5FnBwk=
133
133
  </data>
134
134
  <key>hash2</key>
135
135
  <data>
136
- KuiTqXLPPFFrf/LLB2gvua2kRxZGLPafMQ1/qMY0Fd4=
136
+ OejYVi2uKIpHsHsXj7RYJoaaF4lRzYc7BG089edtMd4=
137
137
  </data>
138
138
  </dict>
139
139
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
140
140
  <dict>
141
141
  <key>hash</key>
142
142
  <data>
143
- Ggyl+ZqWT4SUnSGmwcjPtcDoii0=
143
+ hW6EhBLa/ZxKj2KJAqSrwSxdzTU=
144
144
  </data>
145
145
  <key>hash2</key>
146
146
  <data>
147
- Xk2l0c3NChWEnq/N2Tkv3v0WhNcXMBcB6qBrDGhCkSw=
147
+ Dovau9fXSZRaQdOZwlwbxqcg4rs/lalsgfldkqHEyoc=
148
148
  </data>
149
149
  </dict>
150
150
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
151
151
  <dict>
152
152
  <key>hash</key>
153
153
  <data>
154
- nuxoFPsHLLMWfbvd8aVQj3GKTS0=
154
+ ET2PbztHDBA5E1oZoGnvMeMf7Hw=
155
155
  </data>
156
156
  <key>hash2</key>
157
157
  <data>
158
- SvNjQkHi8c6yIzu0Ix8NBbPohC0Zjoa8HXnF1RutTL4=
158
+ w8ot8k5qpRMwzbfgbSskl1Fvf/6+z+fkBQ/yn5B3UII=
159
159
  </data>
160
160
  </dict>
161
161
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
162
162
  <dict>
163
163
  <key>hash</key>
164
164
  <data>
165
- Ggyl+ZqWT4SUnSGmwcjPtcDoii0=
165
+ hW6EhBLa/ZxKj2KJAqSrwSxdzTU=
166
166
  </data>
167
167
  <key>hash2</key>
168
168
  <data>
169
- Xk2l0c3NChWEnq/N2Tkv3v0WhNcXMBcB6qBrDGhCkSw=
169
+ Dovau9fXSZRaQdOZwlwbxqcg4rs/lalsgfldkqHEyoc=
170
170
  </data>
171
171
  </dict>
172
172
  <key>Modules/DavoiceTTS.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
173
173
  <dict>
174
174
  <key>hash</key>
175
175
  <data>
176
- 2w5fyQLSdRFzxsuGbs7hEzxosb8=
176
+ 1THCI0NR7Tb/6JPy7ZxkB0mHz74=
177
177
  </data>
178
178
  <key>hash2</key>
179
179
  <data>
180
- MEQQ7oOLB+tVWCNId02wabzDTlHFsMZ5gvlae5v9ink=
180
+ 2iEo9/kMnKBz+rhKinfMHnobsM6G8oQesARtMDEp0Jg=
181
181
  </data>
182
182
  </dict>
183
183
  <key>Modules/module.modulemap</key>
@@ -10,15 +10,18 @@
10
10
  <key>HeadersPath</key>
11
11
  <string>Headers</string>
12
12
  <key>LibraryIdentifier</key>
13
- <string>ios-arm64</string>
13
+ <string>ios-arm64_x86_64-simulator</string>
14
14
  <key>LibraryPath</key>
15
15
  <string>libucd.a</string>
16
16
  <key>SupportedArchitectures</key>
17
17
  <array>
18
18
  <string>arm64</string>
19
+ <string>x86_64</string>
19
20
  </array>
20
21
  <key>SupportedPlatform</key>
21
22
  <string>ios</string>
23
+ <key>SupportedPlatformVariant</key>
24
+ <string>simulator</string>
22
25
  </dict>
23
26
  <dict>
24
27
  <key>BinaryPath</key>
@@ -26,18 +29,15 @@
26
29
  <key>HeadersPath</key>
27
30
  <string>Headers</string>
28
31
  <key>LibraryIdentifier</key>
29
- <string>ios-arm64_x86_64-simulator</string>
32
+ <string>ios-arm64</string>
30
33
  <key>LibraryPath</key>
31
34
  <string>libucd.a</string>
32
35
  <key>SupportedArchitectures</key>
33
36
  <array>
34
37
  <string>arm64</string>
35
- <string>x86_64</string>
36
38
  </array>
37
39
  <key>SupportedPlatform</key>
38
40
  <string>ios</string>
39
- <key>SupportedPlatformVariant</key>
40
- <string>simulator</string>
41
41
  </dict>
42
42
  </array>
43
43
  <key>CFBundlePackageType</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-davoice-tts",
3
- "version": "1.0.357",
3
+ "version": "1.0.359",
4
4
  "description": "tts library for React Native",
5
5
  "main": "tts/index.js",
6
6
  "types": "tts/index.d.ts",
package/speech/index.ts CHANGED
@@ -80,6 +80,42 @@ export type NewSpeechWAVEvent = { path: string };
80
80
  export type RNAssetLike = any; // keep permissive (Metro asset numbers/objects vary)
81
81
  export type ModelRef = string | RNAssetLike;
82
82
 
83
+ /** iOS AVAudioSession routing entry shared by STT and TTS. */
84
+ export type RouteConfigEntry = {
85
+ category: 'playAndRecord' | 'record' | 'soloAmbient' | 'ambient' | 'playback';
86
+ mode: 'default' | 'measurement' | 'voiceChat' | 'videoRecording' | 'gameChat';
87
+ options: (
88
+ | 'mixWithOthers'
89
+ | 'duckOthers'
90
+ | 'allowBluetooth'
91
+ | 'allowBluetoothA2DP'
92
+ | 'allowAirPlay'
93
+ | 'defaultToSpeaker'
94
+ | 'overrideMutedMicrophoneInterruption'
95
+ )[];
96
+ preferredInput: 'none' | 'builtInMic';
97
+ /** On onFinishPlaying, deactivate with notifyOthersOnDeactivation before restoring regular routing. */
98
+ notifyOthers?: boolean;
99
+ };
100
+
101
+ /** Same JSON shape accepted by react-native-wakeword. */
102
+ export type AudioRoutingConfig = {
103
+ default: RouteConfigEntry;
104
+ byOutputPort?: {
105
+ carAudio?: RouteConfigEntry;
106
+ builtInReceiver?: RouteConfigEntry;
107
+ builtInSpeaker?: RouteConfigEntry;
108
+ bluetoothA2DP?: RouteConfigEntry;
109
+ bluetoothHFP?: RouteConfigEntry;
110
+ headphones?: RouteConfigEntry;
111
+ };
112
+ /** Optional temporary routing policy for speaker playback batches (speak/playWav/playBuffer). */
113
+ WhenPlayingAudio?: {
114
+ onPlay?: RouteConfigEntry;
115
+ onFinishPlaying?: RouteConfigEntry;
116
+ };
117
+ };
118
+
83
119
  export type UnifiedEvents = {
84
120
  // STT
85
121
  onSpeechStart?: (e: SpeechStartEvent) => void;
@@ -413,6 +449,30 @@ class Speech {
413
449
  }
414
450
 
415
451
  // ---------- Init / Destroy ----------
452
+ /**
453
+ * iOS: set the routing JSON used by both STT and TTS before initialization.
454
+ * This direct value takes precedence over the wakeword library's config.
455
+ */
456
+ async setAudioRoutingConfig(config: AudioRoutingConfig) {
457
+ if (Platform.OS !== 'ios') return;
458
+ if (!config || typeof config !== 'object' || !config.default) {
459
+ throw new Error("setAudioRoutingConfig requires a config with a 'default' entry");
460
+ }
461
+ if (!NativeSpeech?.setAudioRoutingConfig) {
462
+ throw new Error('Native SpeechBridge missing setAudioRoutingConfig()');
463
+ }
464
+ return NativeSpeech.setAudioRoutingConfig(JSON.stringify(config));
465
+ }
466
+
467
+ /** Clears the direct speech config so STT/TTS fall back to wakeword routing JSON. */
468
+ async clearAudioRoutingConfig() {
469
+ if (Platform.OS !== 'ios') return;
470
+ if (!NativeSpeech?.clearAudioRoutingConfig) {
471
+ throw new Error('Native SpeechBridge missing clearAudioRoutingConfig()');
472
+ }
473
+ return NativeSpeech.clearAudioRoutingConfig();
474
+ }
475
+
416
476
  /**
417
477
  * iOS: initialize STT then TTS via native SpeechBridge if available.
418
478
  * Android: no special init needed; optionally preload TTS (if you want).