gpt4 book ai didi

c# - 将从 m3u8 流中提取的 MP3 音频发送到 IBM Watson Speech To Text

转载 作者:行者123 更新时间:2023-12-03 01:35:54 27 4
gpt4 key购买 nike

我正在从 M3U8 实时 url 中提取 MP3 格式的音频,最终目标是将实时音频流发送到 IBM Watson Speech To Text。 m3u8 是通过 Process 调用外部脚本获得的。然后我使用 FFMPEG 脚本在标准输出中获取音频。如果我将音频保存在一个文件中,但我不想保存提取的音频,它可以工作,我需要将数据直接发送到 STT 服务。到目前为止,我是这样进行的:

SpeechToTextService speechToTextService = new SpeechToTextService(sttUsername, sttPassword);
string m3u8Url = "https://something.m3u8";
char[] buffer = new char[48000];
Process ffmpeg = new ProcessHelper(@"ffmpeg\ffmpeg.exe", $"-v 0 -i {m3u8Url} -acodec mp3 -ac 2 -ar 48000 -f mp3 -");

ffmpeg.Start();
int count;
while ((count = ffmpeg.StandardOutput.Read(buffer, 0, 48000)) > 0)
{
ffmpeg.StandardOutput.Read(buffer, 0, 48000);
var answer = speechToTextService.RecognizeSessionless(
audio: buffer.Select(c => (byte)c).ToArray(),
contentType: "audio/mpeg",
smartFormatting: true,
speakerLabels: false,
model: "en-US_BroadbandModel"
);
// Get answer.ResponseJson, deserializing, clean buffer, etc...
}

请求转录的音频时,我收到此错误:
An unhandled exception of type 'System.AggregateException' occurred in IBM.WatsonDeveloperCloud.SpeechToText.v1.dll: 'One or more errors occurred. (The API query failed with status code BadRequest: Bad Request | x-global-transaction-id: bd6cd203720a70d83b9a03451fe28973 | X-DP-Watson-Tran-ID: bd6cd203720a70d83b9a03451fe28973)'
Inner exceptions found, see $exception in variables window for more details.
Innermost exception IBM.WatsonDeveloperCloud.Http.Exceptions.ServiceResponseException : The API query failed with status code BadRequest: Bad Request | x-global-transaction-id: bd6cd203720a70d83b9a03451fe28973 | X-DP-Watson-Tran-ID: bd6cd203720a70d83b9a03451fe28973
at IBM.WatsonDeveloperCloud.Http.Filters.ErrorFilter.OnResponse(IResponse response, HttpResponseMessage responseMessage)
at IBM.WatsonDeveloperCloud.Http.Request.<GetResponse>d__30.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at IBM.WatsonDeveloperCloud.Http.Request.<AsMessage>d__23.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at IBM.WatsonDeveloperCloud.Http.Request.<As>d__24`1.MoveNext()

ProcessHelper 只是为了方便:

class ProcessHelper : Process
{
private string command;
private string arguments;
public ProcessHelper(string command, string arguments, bool redirectStandardOutput = true)
{
this.command = command;
this.arguments = arguments;
StartInfo = new ProcessStartInfo()
{
FileName = this.command,
Arguments = this.arguments,
UseShellExecute = false,
RedirectStandardOutput = redirectStandardOutput,
CreateNoWindow = true
};
}
}

很确定我做错了,我希望有人能对此有所了解。谢谢。

最佳答案

我仍然不知道为什么我无法识别我的缓冲区(第二个 ffmpeg.StandardOutput.Read(buffer, 0, 48000); 是一个错字),但我设法使它与 websockets 一起工作,就像那里解释的那样 https://gist.github.com/nfriedly/0240e862901474a9447a600e5795d500

关于c# - 将从 m3u8 流中提取的 MP3 音频发送到 IBM Watson Speech To Text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303499/

27 4 0