senseStream function
Analyzes audio stream and Returns it to JSON format stream.
The inputData must be PCM_Float and the sample rate must be 22050.
Implementation
Stream<String> senseStream(inputData, apiKey, taskInput) async* {
taskError(taskInput);
final channel = ClientChannel(
hostAddress,
port: 50051,
options: const ChannelOptions(credentials: ChannelCredentials.insecure()),
);
final stub = SenseClient(channel);
int sr = 22050;
Stream<RequestStream> getStream(inputAudioStream) async* {
await for (var audioData in inputAudioStream) {
ByteBuffer buffer = new Float32List.fromList(audioData).buffer;
List<int> intData = buffer.asUint8List();
var streamRequest = RequestStream()
..data = intData
..apikey = apiKey
..sr = sr
..task = taskInput
..dtype = 'float32';
yield streamRequest;
}
}
try {
var streamGenerator = getStream(inputData);
var response = stub.sense_stream(streamGenerator);
await for (var value in response) {
yield value.outputs;
}
} catch (e) {
throw ArgumentError('Invalid API key');
}
await channel.shutdown();
}