Я хочу расшифровать входящий звук для моего мягкого телефона. 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
Naudio и microsoft.cognitiveservices.speech, ⇐ C#
Место общения программистов C#
-
Anonymous
1749860441
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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79665486/naudio-and-microsoft-cognitiveservices-speech[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия