小编jpe*_*pen的帖子

使用WebRTC,Node.js和语音识别引擎进行实时语音识别

A.我想要实现的目标.

一个Web应用程序,允许在Web浏览器中进行实时语音识别(像这样).

B.我目前正在考虑用于实现A的技术.

  • JavaScript的
  • Node.js的
  • 的WebRTC
  • Microsoft Speech API或Pocketsphinx.js或其他东西(不能使用Web Speech API)

C.非常基本的工作流程

  1. Web浏览器与节点服务器建立连接(服务器充当信令服务器并且还提供静态文件)
  2. Web浏览器使用getUserMedia()获取音频流,并将用户的语音发送到节点服务器
  3. 节点服务器将正在接收的音频流传递给语音识别引擎进行分析
  4. 语音识别引擎将结果返回给节点服务器
  5. 节点服务器将文本结果发送回启动Web浏览器
  6. (节点服务器执行步骤1到5以处理来自其他浏览器的请求)

D.问题

  1. Node.js是否适合实现C?
  2. 如何将接收到的音频流从我的节点服务器传递到与服务器分开运行的语音识别引擎?
  3. 我的语音识别引擎可以作为另一个Node应用程序运行(如果我使用Pocketsphinx)?所以我的Node服务器与我的Node语音识别服务器通信.

javascript speech-recognition node.js webrtc

9
推荐指数
2
解决办法
2万
查看次数

在调用vector :: assign()之前调用vector :: reserve()会更好吗?

我理解使用"保留"来避免不必要的重新分配是一种很好的做法(有效STL的第14项):

std::vector<int> v1;
v1.reserve(1000);

for (int i = 0; i < 1000; i++)
    v1.push_back(i);
Run Code Online (Sandbox Code Playgroud)

调用assign时是否适用相同的规则?

std::vector<int> v2;
//v2.reserve(v1.size()); // Better to do this?
v2.assign(v1.begin(), v1.end());
Run Code Online (Sandbox Code Playgroud)

c++ stl

8
推荐指数
2
解决办法
2896
查看次数

如何将音频从浏览器流式传输到WebRTC本机C++应用程序

到目前为止,我设法运行以下示例:

WebRTC原生c ++到浏览器视频流的例子

该示例演示如何将视频从本机C++应用程序(peerconnection_client.exe)流式传输到浏览器(我正在使用Chrome).这很好用,我可以在浏览器中看到自己.

我想做的是将音频从浏览器传输到本机应用程序,但我不知道如何.谁能给我一些指示吗?

javascript c++ audio webrtc

8
推荐指数
1
解决办法
7302
查看次数

如何在OpenSSL中设置连接超时和操作超时

libcurl有这样的超时选项:

CURLOPT_CONNECTTIMEOUT - maximum time in seconds that you allow the connection to the server to take.
CURLOPT_TIMEOUT - maximum time in seconds that you allow the libcurl transfer operation to take.
Run Code Online (Sandbox Code Playgroud)

我想在OpenSSL中实现类似的超时机制.

下面的代码需要进行哪些更改,以便将超时值应用于BIO_do_connect(),BIO_write()和BIO_read()?

我正在使用OpenSSL提供的BIO_write()/ BIO_read()连接到服务器并向/从服务器发送/接收数据.我的代码是基于可从下面的示例代码在这里.

int main()
{
    BIO * bio;
    SSL * ssl;
    SSL_CTX * ctx;

    int p;

    char * request = "GET / HTTP/1.1\x0D\x0AHost: www.verisign.com\x0D\x0A\x43onnection: Close\x0D\x0A\x0D\x0A";
    char r[1024];

    /* Set up the library */

    ERR_load_BIO_strings();
    SSL_load_error_strings();
    OpenSSL_add_all_algorithms();

    /* Set up the SSL context …
Run Code Online (Sandbox Code Playgroud)

c openssl cross-compiling

7
推荐指数
2
解决办法
1万
查看次数

从包含的类调用容器类中定义的回调函数的推荐方法是什么?

想象一下,您有一个类层次结构,如下所示:

class Robot
{
public:
    void OnTaskCompleted() {}

private:
    Task *m_pTask;
};

class Task
{
public:
    virtual void DoTask() = 0;
};

class TidyUp : public Task
{
public:
    void DoTask()
    {
        // When TidyUp task is compeleted invoke OnTaskCompleted() from here.
    }
};
Run Code Online (Sandbox Code Playgroud)

我需要打电话OnTaskCompleted()TidyUp::DoTask().建议的方法是什么?

我想避免:

  • 使OnTaskCompleted()静态
  • 将Robot指针传递给Task

c++ oop

6
推荐指数
1
解决办法
977
查看次数

重新运行时,将Unicode参数传递给Windows .bat文件

我的.bat文件如下所示:

@echo off

CD /D "%~dp0"

if [%2]==[] (  
    set user=%USERNAME%
) else (
    set user=%2%
)

:getFile
if [%1]==[] (
    set /p file=Enter file name : 
) else (
    set file=%~f1
    echo File name: %~f1
)

:checkFile
for /f "useback tokens=*" %%a in ('%file%') do set file=%%~a

if not exist "%file%" (
    echo Error: Could not find file: %file%
    echo.
)

:: Check for admin permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' == '0' (
    goto gotAdmin
)

:: …
Run Code Online (Sandbox Code Playgroud)

windows unicode dos batch-file

6
推荐指数
1
解决办法
1803
查看次数

jqPlot - 当有许多图例项目时,Pie图例太高

我正在使用jqPlot创建带有图例的饼图.我的jqPlot派选项的一部分如下所示:

seriesDefaults: {
    renderer: $.jqplot.PieRenderer,
    rendererOptions: {
        padding: 10,
        showDataLabels: true,
        dataLabelFormatString: '%.2f%%',
        sliceMargin: 2,
        startAngle: -90
    }
},
legend: {
    show: true,
    location: 'e',
    placement: 'outside',
    xoffset: 1,
    fontSize: '11px',
    rowSpacing: '10px',
    textColor: '#222222',
    fontFamily: 'Lucida Grande, Lucida Sans, Arial, sans-serif'
}
Run Code Online (Sandbox Code Playgroud)

最近我遇到了一个案例,其中有许多传奇项目(例如21),这使得我的传奇盒子太高了.我想知道是否有办法要么

  1. 在图例框中有一个垂直滚动条
  2. 在多列中显示图例项(最好)

我尝试过设置以下属性:

  • numberRows
  • numberColumns

我从这个页面找到:

$ .jqplot.PieRenderer选项

但他们似乎没有做任何改变.

有人能够为我提供这个问题的良好解决方案吗?

jqplot

5
推荐指数
1
解决办法
8943
查看次数

jqPlot - 如何将垂直滚动条添加到包含许多图例项的图例框中

上周我问了以下问题,我得到了答案:

jqPlot - 当有许多图例项目时,Pie图例太高

我现在正在寻找一种向我的图例框添加垂直滚动条的方法,在某些情况下可以包含20个以上的图例项.

如果我将以下设置添加到我的CSS文件中,我可以在FireFox和Chrome中获得我想要的结果:

table.jqplot-table-legend {
    display: block;
    height: 350px;
    overflow-y: scroll;
}
Run Code Online (Sandbox Code Playgroud)

但是我需要在IE9中实现相同的效果.

有人知道我需要什么CSS设置吗?

css internet-explorer jqplot

5
推荐指数
1
解决办法
2758
查看次数

使用IOCP时,我应该将WSAOVERLAPPED的hEvent设置为NULL还是设置为WSAEVENT对象的有效句柄?

根据MSDN:

hEvent:如果在没有I/O完成例程(操作的lpCompletionRoutine参数设置为null)的情况下发出重叠I/O操作,则此参数应包含WSAEVENT对象的有效句柄或为null.

当我使用IOCP时,当我调用WSASend()或WSARecv()时,我将NULL传递给它们的最后一个参数(即lpCompletionRoutine):

WSASend(pIoRequest->GetSocket(), pIoRequest->GetWsaBuffer(), 1, NULL, pIoRequest->GetFlags(), pIoRequest, NULL);

WSARecv(pIoRequest->GetSocket(), pIoRequest->GetWsaBuffer(), 1, NULL, &(pIoRequest->GetFlags()), pIoRequest, NULL);
Run Code Online (Sandbox Code Playgroud)

我的"每个I/O数据"类(pIoRequest)看起来像:

class IoRequest : public WSAOVERLAPPED
{
public:
    IoRequest()
    {
        ...
        SecureZeroMemory(this, sizeof(WSAOVERLAPPED));
        hEvent = WSACreateEvent(); // A
    }
    ...
    void ResetForNextIoRequest()
    {
        WSACloseEvent(hEvent); // B
        SecureZeroMemory(this, sizeof(WSAOVERLAPPED));
        hEvent = WSACreateEvent(); // C
        ...
    }
    ...
    DWORD& GetFlags() { return m_dwFlags; }
    ...
private:
    ...
    DWORD m_dwFlags;
    ...
};
Run Code Online (Sandbox Code Playgroud)

即使我注释掉上面标记为A,B和C的行,它似乎对我的程序的行为没有任何影响.

那么如何决定何时调用WSACreateEvent()或者只是将hEvent设置为NULL?

c++ sockets iocp winsock2

5
推荐指数
1
解决办法
1626
查看次数

使用 WebRTC 的对等服务器音频流

我了解建立点对点连接

发起者对等体

  • 初始化共享信令信道
  • 初始化 RTCPeerConnection 对象 (pc)
  • 使用 getUserMedia 请求本地流
  • 向 pc 注册本地 MediaStream
  • 创建 SDP 报价并发送给对等方
  • 涓涓细流 ICE 候选人
  • 注册远程 ICE 候选者以开始连接检查

接收端

  • 收听和处理远程提供的报价
  • 注册远程 ICE 候选者以开始连接检查
  • 生成 SDP 应答并发送给对等方

但是我的 WebRTC 用例是对等服务器,其中接收到的流在我的 Node.js 服务器上进行处理。在我的用例中,服务器具有可公开路由的 IP 地址,并且正在侦听任何新的 RTCPeerConnection 请求。因此,在我的案例中,建立对等连接所涉及的一些步骤似乎是不必要的。

  • Q1 建立对等服务器连接的步骤与建立对等连接的步骤有何不同?

特别

  • Q2 是否还需要信令通道?
  • Q3 我还需要逐步筛选 ICE 候选人吗?

webrtc

5
推荐指数
1
解决办法
3105
查看次数