Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Google语音到文本API在web应用程序中从麦克风捕获实时音频_C#_Asp.net Mvc_Google Cloud Platform_Speech Recognition_Speech To Text - Fatal编程技术网

C# 使用Google语音到文本API在web应用程序中从麦克风捕获实时音频

C# 使用Google语音到文本API在web应用程序中从麦克风捕获实时音频,c#,asp.net-mvc,google-cloud-platform,speech-recognition,speech-to-text,C#,Asp.net Mvc,Google Cloud Platform,Speech Recognition,Speech To Text,我有一个带有语音输入表单的C#MVC web应用程序。我的意思是用户可以通过麦克风使用语音在文本框中输入值。我决定使用API来实现这一点。但我对使用谷歌语音到文本API来实现这一点有些怀疑 因为我试图在MVC Web应用程序中实现这一点,所以无法从服务器端代码访问mic设备。我想将语音转换成实时音频,并将输出文本显示到网页。解决此问题的一个方法是使用 您可以按照此操作来获取麦克风输入,还可以很好地解释如何使用WebSocket处理麦克风输入 以下是解释该概念的唯一sudo代码 它也大大简化了,因

我有一个带有语音输入表单的C#MVC web应用程序。我的意思是用户可以通过麦克风使用语音在文本框中输入值。我决定使用API来实现这一点。但我对使用谷歌语音到文本API来实现这一点有些怀疑


因为我试图在MVC Web应用程序中实现这一点,所以无法从服务器端代码访问mic设备。我想将语音转换成实时音频,并将输出文本显示到网页。

解决此问题的一个方法是使用

您可以按照此操作来获取麦克风输入,还可以很好地解释如何使用WebSocket处理麦克风输入

以下是解释该概念的唯一sudo代码

它也大大简化了,因为我不知道,例如,谷歌的API是否能够处理这样一个事实:你总是只发送语音输入的片段,等等。正如我所说,代码只给出了基本过程的大致概述,如果服务器离线,则没有逻辑等等

但是在
函数进程\u麦克风\u缓冲区(事件)
函数内部,您可以调用信号器

所以函数应该是这样的

function process_microphone_buffer(event) {
    // you should handle this as a singelton
    const connection = new signalR.HubConnectionBuilder().withUrl("/speechToTextHub ").build();
    const microphone_output_buffer = event.inputBuffer.getChannelData(0);
    connection.invoke("SendMicrophoneBuffer", microphone_output_buffer).catch(function (err) {
        return console.error(err.toString());
    });
}
在您的服务器上,您可以实现相应的集线器:

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRChat.Hubs
{

    public class SpeechToTextHub : Hub
    {
        public async Task SendMicrophoneBuffer(byte[] buffer)
        {
            var googleApi = new GoogleApi();
            var speechToTextResult = await googleApi.GetTextFromSpeechAsync(buffer);
            Context.Clients.Client(Context.ConnectionId).SendAsync("SpeechToTextResult", speechToTextResult);
        }
    }
}
在你的客户身上你有这样的东西

connection.on("SpeechToTextResult", function (textResult) {
   console.log(textResult);
});
如果答案对于Stackoverflow来说过于笼统,我也可以删除它。
如果仍然有未解决的问题,我可以相应地扩展我的答案。

解决此问题的一个方法是使用

您可以按照此操作来获取麦克风输入,还可以很好地解释如何使用WebSocket处理麦克风输入

以下是解释该概念的唯一sudo代码

它也大大简化了,因为我不知道,例如,谷歌的API是否能够处理这样一个事实:你总是只发送语音输入的片段,等等。正如我所说,代码只给出了基本过程的大致概述,如果服务器离线,则没有逻辑等等

但是在
函数进程\u麦克风\u缓冲区(事件)
函数内部,您可以调用信号器

所以函数应该是这样的

function process_microphone_buffer(event) {
    // you should handle this as a singelton
    const connection = new signalR.HubConnectionBuilder().withUrl("/speechToTextHub ").build();
    const microphone_output_buffer = event.inputBuffer.getChannelData(0);
    connection.invoke("SendMicrophoneBuffer", microphone_output_buffer).catch(function (err) {
        return console.error(err.toString());
    });
}
在您的服务器上,您可以实现相应的集线器:

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRChat.Hubs
{

    public class SpeechToTextHub : Hub
    {
        public async Task SendMicrophoneBuffer(byte[] buffer)
        {
            var googleApi = new GoogleApi();
            var speechToTextResult = await googleApi.GetTextFromSpeechAsync(buffer);
            Context.Clients.Client(Context.ConnectionId).SendAsync("SpeechToTextResult", speechToTextResult);
        }
    }
}
在你的客户身上你有这样的东西

connection.on("SpeechToTextResult", function (textResult) {
   console.log(textResult);
});
如果答案对于Stackoverflow来说过于笼统,我也可以删除它。
如果仍有未解决的问题,我可以相应地扩展我的答案。

您可以使用Signar将输入发送到服务器,调用Google API并将结果推回到客户端。@Darem非常感谢您的回答。你能推荐一些示例代码吗?这是微软官方网页上的。这是一个简单的聊天应用程序。但您可以将字符串输入替换为麦克风(字节)输入,并将其发送到后端。我希望这对你有帮助?你好@Darem,你能把你的评论作为一个答案发表吗?这样其他人就可以看到它了?@Alejandro我添加了我的评论作为一个anwser。你可以使用Signer将输入发送到你的服务器,调用Google API并将结果推回到客户端。@Darem非常感谢你的回复。你能推荐一些示例代码吗?这是微软官方网页上的。这是一个简单的聊天应用程序。但您可以将字符串输入替换为麦克风(字节)输入,并将其发送到后端。我希望这能对你有所帮助?你好@Darem,你能把你的评论作为一个答案发布出来,这样其他人就更容易看到了吗?@Alejandro我把我的评论添加为anwser。