Я работаю над технологией ботов, в моем текущем проекте я реализовал функцию вызова Skype, в которой я записал свой голос и сохранил его в BLOB-объекте хранилища Azure, но мне нужна функциональность, как преобразование аудиофайлов в текст, а затем определение намерений в этом тексте используя LUIS.
Это код, который я написал для загрузки записанного контента в хранилище Azure.
private async Task OnRecordCompleted(RecordOutcomeEvent recordOutcomeEvent)
{
if (recordOutcomeEvent.RecordOutcome.Outcome == Outcome.Success)
{
var record = await recordOutcomeEvent.RecordedContent;
string path = HttpContext.Current.Server.MapPath($"~/{recordOutcomeEvent.RecordOutcome.Id}.wav");//Wma,wav,Mp3 ~/
using (var writer = new FileStream(path, FileMode.Create))
{
await record.CopyToAsync(writer);
}
try
{
var storageConnectionString = ConfigurationManager.AppSettings["RealtimeAnamoly_StorageConnectionString"];
Debug.WriteLine(storageConnectionString);
var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
// We are going to use Blob Storage, so we need a blob client.
var blobClient = storageAccount.CreateCloudBlobClient();
// Data in blobs are organized in containers.
// Here, we create a new, empty container.
CloudBlobContainer blobContainer = blobClient.GetContainerReference("myfirstcontainer");
blobContainer.CreateIfNotExists();
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference($"{recordOutcomeEvent.RecordOutcome.Id}.wav");
// We also set the permissions to "Public", so anyone will be able to access the file.
// By default, containers are created with private permissions only.
blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(path))//@"path\myfile"
{
blockBlob.UploadFromStream(fileStream);
}
//UploadAudioFiletoLuis(path);
recordOutcomeEvent.ResultingWorkflow.Actions = new List<ActionBase>
{
GetSilencePrompt(),
GetPromptForText("Successfully Recorded your message! Please wait for Response")
//CreateIvrOptions(AthenaIVROptions.ALS,1,true)
};
}
catch (Exception ex)
{
}
}
else
{
if (silenceTimes > 1)
{
recordOutcomeEvent.ResultingWorkflow.Actions = new List<ActionBase>
{
GetPromptForText("Thank you for calling"),
new Hangup() { OperationId = Guid.NewGuid().ToString() }
};
recordOutcomeEvent.ResultingWorkflow.Links = null;
silenceTimes = 0;
}
else
{
silenceTimes++;
recordOutcomeEvent.ResultingWorkflow.Actions = new List<ActionBase>
{
GetRecordForText("I didn't catch that, would you kinly repeat?")
};
}
}
}
Не могли бы вы рассказать, как преобразовать аудиофайлы .wav в текст после этого, как определить намерения и получить ответ от LUIS?
-Pradeep
1 ответ
Вам следует взглянуть на Microsoft Cognitive Services Bing Speech API, поскольку он делает то, что вы ищете; конвертирует аудио в текст.
Здесь есть образец, использующий API. Если вы отправляете боту файл WAV; он ответит тем, что API понял из аудио.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.