You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to send bytes from the audio stream to my microcontroller. Issue here is that the audio stream has a length of 0 and it doesn't change. I also checked that the permissions are set and that the microphone recording is allowed in the settings.
Details:
iPhone 8 Plus
Newest iOS version
I went through all issues here and tried everything I could but nothing works.
Last thing I tried was this: #38
This is my code (yes _recorder.StartRecording() is called before) a part of it is from your Xamarin.Cognitive.Speech plugin
private async Task CompileAudio()
{
using Stream audioStream = _recorder.GetAudioFileStream();
const int audioDataWaitInterval = 100; //ms
const int maxReadRetries = 10; //times
const int ChunkSize = 1024;
const int streamReadDelay = 30;
try
{
byte[] buffer = null;
int bytesRead = 0;
int readRetryCount = 0;
if (audioStream.CanRead)
{
var totalWait = 0;
while (audioStream.Length < ChunkSize && totalWait < audioDataWaitInterval * maxReadRetries)
{
await Task.Delay(audioDataWaitInterval);
totalWait += audioDataWaitInterval;
}
Console.WriteLine("Length: " + audioStream.Length);
buffer = new byte[checked((uint)Math.Min(ChunkSize, (int)audioStream.Length))];
var tcs = new TaskCompletionSource<bool>();
var waitTask = _recordTask ?? tcs.Task;
while (audioStream.CanRead && ((bytesRead = await audioStream.ReadAsync(buffer, 0, buffer.Length)) != 0 || !waitTask.Wait(streamReadDelay)))
{
if (bytesRead > 0)
{
readRetryCount = -1;
Console.WriteLine("Read: " + bytesRead);
if (_cancelSource.IsCancellationRequested)
{
break;
}
for (int i = 0; i < _samples; i++)
{
_micData = BitConverter.ToUInt16(buffer, 0);
Console.WriteLine("MicData: " + _micData.ToString());
_vReal[i] = _micData;
_vImag[i] = 0;
}
}
readRetryCount++;
if (_recordTask == null && readRetryCount >= maxReadRetries)
{
tcs.SetResult(true);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("CompileAudio: " + ex.ToString());
throw;
}
finally
{
audioStream.Close();
}
}
EDIT:
Shorten the code
The text was updated successfully, but these errors were encountered:
Hey,
I'm trying to send bytes from the audio stream to my microcontroller. Issue here is that the audio stream has a length of 0 and it doesn't change. I also checked that the permissions are set and that the microphone recording is allowed in the settings.
Details:
iPhone 8 Plus
Newest iOS version
I went through all issues here and tried everything I could but nothing works.
Last thing I tried was this: #38
This is my code (yes _recorder.StartRecording() is called before) a part of it is from your Xamarin.Cognitive.Speech plugin
EDIT:
Shorten the code
The text was updated successfully, but these errors were encountered: