问题描述
我正在尝试使用桌面语音到文本认知服务在桌面应用程序中从音频输入文件中实现文本的蓝色语音,但是从输入中提取的音频永远不会被完全提取。我尝试创建一个示例项目,该示例项目类似于在Microsoft平台上发布的示例,但在该平台上可以正常工作,但是当我尝试将其集成到桌面应用程序中时,它并没有将音频文件中的所有语音提取到文本中。
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
namespace distributedService.Transcribing
{
class AzureTranscribing : ITranscribing
{
private string _azureAccessKeyId;
private string _azureTranscribeRegion;
private readonly SpeechConfig _config;
public AzureTranscribing()
{
SetAzureConfig();
_config = SpeechConfig.FromSubscription(_azureAccessKeyId,_azureTranscribeRegion);
}
public async Task<string> Transcribe(string audioFilePath,long projectId = 0,long fileId = 0)
{
string transcribedText = await Transcribe(audioFilePath);
}
public async Task<string> Transcribe(string fileKey)
{
try
{
System.Diagnostics.Debugger.Launch();
var stopRecognition = new taskcompletionsource<int>();
using (var audioInput = AudioConfig.FromWavFileInput(fileKey)) {
using (var recognizer = new SpeechRecognizer(_config,audioInput))
{
//subscribe to the Recognizing,Recognized,and Canceled events to get the recognition results
// Signal for events containing intermediate recognition results.
recognizer.Recognizing += (s,e) =>
{
System.Diagnostics.Trace.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};
//Signal for events containing final recognition results
recognizer.Recognized += (s,e) =>
{
if (e.Result.Reason == ResultReason.RecognizedSpeech)
{
transcribedText = e.Result.Text;
}
else if (e.Result.Reason == ResultReason.NoMatch)
{
transcribedText = string.Empty;
}
};
//Signal for events containing canceled recognition results
recognizer.Canceled += (s,e) =>
{
if (e.Reason == CancellationReason.Error)
{
System.Diagnostics.Trace.WriteLine($"Cancelled: errorCode: {e.ErrorDetails}. errorDetails:{e.ErrorDetails}");
stopRecognition.TrySetResult(0);
};
};
// Signal for events indicating the end of a recognition session (operation).
recognizer.SessionStopped += (s,e) =>
{
System.Diagnostics.Trace.WriteLine("\n Session stopped event.");
stopRecognition.TrySetResult(0);
};
// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
await recognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);
// Waits for completion. Use Task.WaitAny to keep the task rooted.
Task.WaitAny(new[] { stopRecognition.Task });
// Stops recognition.
await recognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
}
}
}
catch (Exception e)
{
System.Diagnostics.Trace.WriteLine(e);
throw;
}
return transcribedText;
}
private void SetAzureConfig()
{
_azureAccessKeyId = GetDatabaseControlSetting<string>(ControlSetting.AZURE_ACCESS_KEY_ID);
_azureTranscribeRegion = GetDatabaseControlSetting<string>(ControlSetting.AZURE_REGION);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)