⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.h

📁 CMU大名鼎鼎的SPHINX-3大词汇量连续语音识别系统
💻 H
字号:
/* ==================================================================== * Copyright (c) 1999-2004 Carnegie Mellon University.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * This work was supported in part by funding from the Defense Advanced  * Research Projects Agency and the National Science Foundation of the  * United States of America, and the CMU Sphinx Speech Consortium. * * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * *//* * ad.h -- generic live audio interface for recording and playback *  * ********************************************** * CMU ARPA Speech Project * * Copyright (c) 1996 Carnegie Mellon University. * ALL RIGHTS RESERVED. * ********************************************** *  * HISTORY *  * $Log: ad.h,v $ * Revision 1.7  2004/12/14 00:39:49  arthchan2003 * add <s3types.h> to the code, change some comments to doxygen style * * Revision 1.6  2004/12/06 11:17:55  arthchan2003 * Update the copyright information of ad.h, *sigh* start to feel tired of updating documentation system.  Anyone who has time, please take up libs3audio. That is the last place which is undocumented * * Revision 1.5  2004/07/23 23:44:46  egouvea * Changed the cygwin code to use the same audio files as the MS Visual code, removed unused variables from fe_interface.c * * Revision 1.4  2004/02/29 23:48:31  egouvea * Updated configure.in to the recent automake/autoconf, fixed win32 * references in audio files. * * Revision 1.3  2002/11/10 19:27:38  egouvea * Fixed references to sun's implementation of audio interface, * referring to the correct .h file, and replacing sun4 with sunos. * * Revision 1.2  2001/12/11 04:40:55  lenzo * License cleanup. * * Revision 1.1.1.1  2001/12/03 16:01:45  egouvea * Initial import of sphinx3 * * Revision 1.1.1.1  2001/01/17 05:17:14  ricky * Initial Import of the s3.3 decoder, has working decodeaudiofile, s3.3_live * *  * 19-Jan-1999	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Added AD_ return codes.  Added ad_open_sps_bufsize(), and * 		ad_rec_t.n_buf. *  * 17-Apr-98	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Added ad_open_play_sps(). *  * 07-Mar-98	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Added ad_open_sps(). *  * 10-Jun-96	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Added ad_wbuf_t, ad_rec_t, and ad_play_t types, and augmented all * 		recording functions with ad_rec_t, and playback functions with * 		ad_play_t. *  * 06-Jun-96	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University *		Created. */#ifndef _AD_H_#define _AD_H_#if !defined(WIN32)#include "ad_conf.h"#endif#if defined (__CYGWIN__)#include <w32api/windows.h>#include <w32api/mmsystem.h>#elif defined(WIN32)#include <windows.h>#include <mmsystem.h>#elif defined(AD_BACKEND_OSF) /* Not implemented, it seems */#include <AF/AFlib.h>#elif defined(AD_BACKEND_HPUX) /* Not implemented, it seems */#include <audio/Alib.h>#elif defined(AD_BACKEND_ALSA)#include <sys/asoundlib.h>#elif defined(AD_BACKEND_IRIX)#include <dmedia/audio.h>#endif#include <s3types.h>#define AD_SAMPLE_SIZE		(sizeof(int16))#define DEFAULT_SAMPLES_PER_SEC	16000/* Return codes */#define AD_OK		0#define AD_EOF		-1#define AD_ERR_GEN	-1#define AD_ERR_NOT_OPEN	-2#define AD_ERR_WAVE	-3#if  (defined(WIN32) || defined(AD_BACKEND_WIN32))typedef struct {    HGLOBAL h_whdr;    LPWAVEHDR p_whdr;    HGLOBAL h_buf;    LPSTR p_buf;} ad_wbuf_t;#endif/* ------------ RECORDING -------------- *//* * NOTE: ad_rec_t and ad_play_t are READ-ONLY structures for the user. */#if (defined(WIN32) || defined(AD_BACKEND_WIN32))typedef struct {    HWAVEIN h_wavein;	/* "HANDLE" to the audio input device */    ad_wbuf_t *wi_buf;	/* Recording buffers provided to system */    int32 n_buf;	/* #Recording buffers provided to system */    int32 opened;	/* Flag; A/D opened for recording */    int32 recording;    int32 curbuf;	/* Current buffer with data for application */    int32 curoff;	/* Start of data for application in curbuf */    int32 curlen;	/* #samples of data from curoff in curbuf */    int32 lastbuf;	/* Last buffer containing data after recording stopped */    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elif defined(AD_BACKEND_OSF)typedef struct {    AFAudioConn *aud;    AC ac;    int32 recording;		/* flag; TRUE iff currently recording */    ATime last_rec_time;	/* timestamp of last sample recorded in buffer */    ATime end_rec_time;		/* time at which recording stopped */    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elif defined(AD_BACKEND_SUNOS)typedef struct {    int32 audio_fd;    int32 recording;    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elif defined(AD_BACKEND_OSS) || defined(AD_BACKEND_OSS_BSD)/* Added by jd5q+@andrew.cmu.edu, 10/3/1997: */typedef struct {    int32 dspFD;	/* Audio device descriptor */    int32 recording;    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elif defined(AD_BACKEND_ALSA)typedef struct {    snd_pcm_t *dspH;    int32 recording;    int32 sps;    int32 bps;} ad_rec_t;#elif defined(AD_BACKEND_HPUX)typedef struct {    Audio *audio;	/* The main audio handle */    ATransID xid;	/* The current transaction ID */    int32 streamSocket;	/* Connection socket */    int32 recording;	/* TRUE iff currently recording */    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elif defined(AD_BACKEND_IRIX)typedef struct {    ALport audio;	/* The main audio handle */    int32 recording;	/* TRUE iff currently recording */    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;#elsetypedef struct {    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_rec_t;	/* Dummy definition for systems without A/D stuff */#endif/* * Open audio device for recording.  Opened in non-blocking mode and placed in idle * state.  Return value: pointer to read-only ad_rec_t structure if successful, NULL * otherwise.  The return value to be used as the first argument to other recording * functions. */ad_rec_t *ad_open_sps (int32 samples_per_sec);/* Like ad_open_sps but with default samples/sec and bufsize */ad_rec_t *ad_open ( void );#if defined(WIN32)/* * Like ad_open_sps but specifies buffering required within driver.  This function is * useful if the default (5000 msec worth) is too small and results in loss of data. */ad_rec_t *ad_open_sps_bufsize (int32 samples_per_sec, int32 bufsize_msec);#endif/* Start audio recording.  Return value: 0 if successful, <0 otherwise */int32 ad_start_rec (ad_rec_t *);/* Stop audio recording.  Return value: 0 if successful, <0 otherwise */int32 ad_stop_rec (ad_rec_t *);/* Close the recording device.  Return value: 0 if successful, <0 otherwise */int32 ad_close (ad_rec_t *);/* * Read next block of audio samples while recording; read upto max samples into buf. * Return value: # samples actually read (could be 0 since non-blocking); -1 if not * recording and no more samples remaining to be read from most recent recording. */int32 ad_read (ad_rec_t *, int16 *buf, int32 max);/* ------ PLAYBACK; SIMILAR TO RECORDING ------- */#if defined(WIN32)typedef struct {    HWAVEOUT h_waveout;	/* "HANDLE" to the audio output device */    ad_wbuf_t *wo_buf;	/* Playback buffers given to the system */    int32 opened;	/* Flag; A/D opened for playback */    int32 playing;    char *busy;		/* flags [N_WO_BUF] indicating whether given to system */    int32 nxtbuf;	/* Next buffer [0..N_WO_BUF-1] to be used for playback data */    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_play_t;#elsetypedef struct {    int32 sps;		/* Samples/sec */    int32 bps;		/* Bytes/sample */} ad_play_t;	/* Dummy definition for systems without A/D stuff */#endifad_play_t *ad_open_play_sps (int32 samples_per_sec);ad_play_t *ad_open_play ( void );int32 ad_start_play (ad_play_t *);int32 ad_stop_play (ad_play_t *);int32 ad_close_play (ad_play_t *);/* * Write the next block of [len] samples from rawbuf to the A/D device for playback. * The device may queue less than len samples, possibly 0, since it is non-blocking. * The application should resubmit the remaining data to be played. * Return value: # samples accepted for playback; -1 if error. */int32 ad_write (ad_play_t *, int16 *buf, int32 len);/* ------ MISCELLANEOUS ------- *//* * Convert mu-law data to int16 linear PCM format. */void ad_mu2li (int16 *outbuf,		/* Out: PCM data placed here (allocated by user) */	       unsigned char *inbuf,	/* In: Input buffer with mulaw data */	       int32 n_samp);		/* In: #Samples in inbuf */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -