华为手机设置语音设置 :linux采集语音传输给windows播放发出“嘟嘟嘟”。参数设置求助!

太平洋在线 91 0

  linux采集语音传输给windows播放发出“嘟嘟嘟”华为手机设置语音设置 。参数设置求助!

  linux采集语音:

  #include <unistd.h>

  #include <fcntl.h>

  #include <sys/types.h>

  #include <sys/ioctl.h>

  #include <stdlib.h>

  #include <stdio.h>

  #include <linux/soundcard.h>

  #define LENGTH 3 /* 存储秒数 */

  #define RATE 8000 /* 采样频率 */

  #define SIZE 8 /* 量化位数 */

  #define CHANNELS 1 /* 声道数目 */

  read(fd, buf, sizeof(buf));

  生成的pcm数据华为手机设置语音设置 。经过socket传输后。windows接收。

  windows 将这些pcm数据写入声卡:

   //检查设备

   if(!waveInGetNumDevs())

   MessageBeep(MB_OK);

   MessageBox("找不到语音input设备华为手机设置语音设置 !");

   return FALSE;

   if(!waveOutGetNumDevs())

   MessageBeep(MB_OK);

   MessageBox("找不到语音 output 设备华为手机设置语音设置 !");

   return FALSE;

   //Format of voice: 16 bits,11.025kHz,mono audio

   pcm.wf.wFormatTag =WAVE_FORMAT_PCM; //格式为PCM

   pcm.wf.nChannels =1; //单声道 mono

   pcm.wf.nSamplesPerSec =8000; //采样率

   pcm.wf.nAvgBytesPerSec =8000*2; //数据率

   pcm.wf.nBlockAlign =1; //每样点的字节数

   pcm.wBitsPerSample =8; //采样精度

   pWaveOutHdr =(LPWAVEHDR)GlobalAllocPtr(GHND|GMEM_SHARE,sizeof(WAVEHDR));

   pWaveHdr1 =(LPWAVEHDR)GlobalAllocPtr(GHND|GMEM_SHARE,sizeof(WAVEHDR));

   pWaveHdr2 =(LPWAVEHDR)GlobalAllocPtr(GHND|GMEM_SHARE,sizeof(WAVEHDR));

   //放音缓冲区

   pOutBuffer1 =(char *)GlobalAllocPtr(GHND|GMEM_SHARE,PCMBUFFER_SIZE*BLOCK_PER_BUFFER+500);

   pOutBuffer2 =(char *)GlobalAllocPtr(GHND|GMEM_SHARE,PCMBUFFER_SIZE*BLOCK_PER_BUFFER+500);

   //接收缓冲区

   rBuffer =(char *)GlobalAllocPtr(GHND|GMEM_SHARE,PCMBUFFER_SIZE);

   m_PlayFirst=TRUE;

   return TRUE; // return TRUE unless you set the focus to a control

  这是一部分代码华为手机设置语音设置 。现在是linux下面说话,windows那边播放,但是windows播放出“嘟嘟”的声音,播放的声音完全失真了,不断地类似于“次次次”的声音。求高手解答。

  是不是linux采集成pcm的参数:

  #define LENGTH 3 /* 存储秒数 */

  #define RATE 8000 /* 采样频率 */

  #define SIZE 8 /* 量化位数 */

  #define CHANNELS 1 /* 声道数目 */

  和windows写入pcm的参数:

   //Format of voice: 16 bits,11.025kHz,mono audio

   pcm.wf.wFormatTag =WAVE_FORMAT_PCM; //格式为PCM

   pcm.wf.nChannels =1; //单声道 mono

   pcm.wf.nSamplesPerSec =8000; //采样率

   pcm.wf.nAvgBytesPerSec =8000*2; //数据率

   pcm.wf.nBlockAlign =1; //每样点的字节数

   pcm.wBitsPerSample =8; //采样精度

   要格式一致华为手机设置语音设置 ,这个怎么弄好呢?谢谢了

标签: 嘟嘟 输给 采集 语音 发出

抱歉,评论功能暂时关闭!