Naudio и microsoft.cognitiveservices.speech,C#

Место общения программистов C#
Ответить
Anonymous
 Naudio и microsoft.cognitiveservices.speech,

Сообщение Anonymous »

Я хочу расшифровать входящий звук для моего мягкого телефона. IDE предназначен для захвата звука у моего динамика и отправить его в службу STT. < /p>
Я сделал это для микрофона, и он работал. Но это не работает для моего звука (я плачу на YouTube любой попытки транскрипции его для тестирования) < /p>
Я думаю, что проблема в том, что мне нужно преобразовать звук в 16-километровый 16-битный PCM Mono. Чего мне не хватает? < /p>
var format = AudioStreamFormat.GetWaveFormatPCM(16000, 16, 1);
_push = AudioInputStream.CreatePushStream(format);
var audioInput = AudioConfig.FromStreamInput(_push);

// Check the device flow direction and create the appropriate capture object
if (selectedAudioDevice.Device.DataFlow == DataFlow.Render)
{
// For render devices (speakers/headphones), use loopback capture
var loopbackCapture = new WasapiLoopbackCapture(selectedAudioDevice.Device);

// Create a buffer to store audio data
BufferedWaveProvider bufferedProvider = new BufferedWaveProvider(loopbackCapture.WaveFormat);

// Create resampler with the target format (16kHz, 16-bit, mono)
var targetFormat = new WaveFormat(16000, 16, 1);

// Create resampler
MediaFoundationResampler resampler = null;
resampler = new MediaFoundationResampler(bufferedProvider, targetFormat);
resampler.ResamplerQuality = 60; // High quality

_capture = loopbackCapture;
_capture.DataAvailable += (s, a) =>
{
// Add data to the buffer
bufferedProvider.AddSamples(a.Buffer, 0, a.BytesRecorded);

// Read the resampled data and push it
byte[] buffer = new byte[a.BytesRecorded];
int bytesRead = resampler.Read(buffer, 0, buffer.Length);
if (bytesRead > 0)
{
_push.Write(buffer, bytesRead);
}
};

_capture.RecordingStopped += (s, e) =>
{
resampler?.Dispose();
_push.Close();
};
}
else
{
// For capture devices (microphones), use normal capture
var normalCapture = new WasapiCapture(selectedAudioDevice.Device);
normalCapture.WaveFormat = new WaveFormat(16000, 16, 1);
_capture = normalCapture;
_capture.DataAvailable += (s, a) => _push.Write(a.Buffer, a.BytesRecorded);
_capture.RecordingStopped += (s, e) => _push.Close();
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... ces-speech
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»