Julius 4.1.5
libsent/include/sent/adin.h
説明を見る。
00001 
00024 /*
00025  * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University
00026  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00027  * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology
00028  * All rights reserved
00029  */
00030 
00031 #ifndef __SENT_ADIN__
00032 #define __SENT_ADIN__
00033 
00034 #include <sent/stddefs.h>
00035 #include <sent/speech.h>
00036 
00037 #if defined(HAVE_ALSA_ASOUNDLIB_H) || defined(HAVE_SYS_ASOUNDLIB_H)
00038 #define HAS_ALSA
00039 #endif
00040 #ifdef __linux__
00041 #if defined(HAVE_SYS_SOUNDCARD_H) || defined(HAVE_MACHINE_SOUNDCARD_H)
00042 #define HAS_OSS
00043 #endif
00044 #endif /* __linux__ */
00045 #ifdef HAVE_ESD_H
00046 #define HAS_ESD
00047 #endif
00048 
00050 enum {
00051   INPUT_WAVEFORM,
00052   INPUT_VECTOR
00053 };
00054 
00056 enum {
00057   SP_RAWFILE,                   
00058   SP_MIC,                       
00059   SP_ADINNET,                   
00060   SP_MFCFILE,                   
00061   SP_NETAUDIO,                  
00062   SP_STDIN,                     
00063   SP_MFCMODULE                  
00064 };
00065 
00067 enum {
00068   SP_INPUT_DEFAULT,
00069   SP_INPUT_ALSA,
00070   SP_INPUT_OSS,
00071   SP_INPUT_ESD,
00072 };
00073 
00075 #define DEFAULT_WSTEP 1000
00076 
00082 #ifdef HAVE_LIBSNDFILE
00083 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV,AU,SND,NIST,ADPCM and more"
00084 #else
00085 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV"
00086 #endif
00087 
00093 #define ZMEANSAMPLES 48000
00094 
00095 #define DS_RBSIZE       512     ///< Filter size
00096 #define DS_BUFSIZE      256     ///< Work area buffer size for x[]
00097 #define DS_BUFSIZE_Y    512     ///< Work area buffer size for y[]
00098 
00102 typedef struct {
00103   int decrate;                  
00104   int intrate;                  
00105   double hdn[DS_RBSIZE+1];      
00106   int hdn_len;          
00107   int delay;            
00108   double x[DS_BUFSIZE]; 
00109   double y[DS_BUFSIZE_Y];       
00110   double rb[DS_RBSIZE]; 
00111   int indx;             
00112   int bp;               
00113   int count;            
00114 } DS_FILTER;
00119 typedef struct {
00120   DS_FILTER *fir[3]; 
00121   double *buf[4]; 
00122   int buflen; 
00123 } DS_BUFFER;
00124 
00129 typedef struct {
00130   int trigger;          
00131   int length;           
00132   int offset;           
00133   int zero_cross;               
00134   int is_trig;          
00135   int sign;                     
00136   int top;                      
00137   int valid_len;                
00138   SP16 *data;           
00139   int *is_zc;           
00140   int level;            
00141 } ZEROCROSS;
00142 
00143 #define ZC_UNDEF 2                      ///< Undefined mark for zerocross
00144 #define ZC_POSITIVE 1           ///< Positive mark used for zerocross
00145 #define ZC_NEGATIVE -1          ///< Negative mark used for zerocross
00146 
00147 
00148 #ifdef __cplusplus
00149 extern "C" {
00150 #endif
00151 
00152 /* adin/adin_mic_*.c */
00153 boolean adin_mic_standby(int freq, void *arg);
00154 boolean adin_mic_begin(char *pathname);
00155 boolean adin_mic_end();
00156 int adin_mic_read(SP16 *buf, int sampnum);
00157 char *adin_mic_input_name();
00158 /* adin/adin_mic_linux_alsa.c */
00159 boolean adin_alsa_standby(int freq, void *arg);
00160 boolean adin_alsa_begin(char *pathname);
00161 boolean adin_alsa_end();
00162 int adin_alsa_read(SP16 *buf, int sampnum);
00163 char *adin_alsa_input_name();
00164 /* adin/adin_mic_linux_oss.c */
00165 boolean adin_oss_standby(int freq, void *arg);
00166 boolean adin_oss_begin(char *pathname);
00167 boolean adin_oss_end();
00168 int adin_oss_read(SP16 *buf, int sampnum);
00169 char *adin_oss_input_name();
00170 /* adin/adin_esd.c */
00171 boolean adin_esd_standby(int freq, void *arg);
00172 boolean adin_esd_begin(char *pathname);
00173 boolean adin_esd_end();
00174 int adin_esd_read(SP16 *buf, int sampnum);
00175 char *adin_esd_input_name();
00176 /* adin/adin_netaudio.c  and adin/adin_na.c */
00177 boolean adin_netaudio_standby(int freq, void *arg);
00178 boolean adin_netaudio_begin(char *pathname);
00179 boolean adin_netaudio_end();
00180 int adin_netaudio_read(SP16 *buf, int sampnum);
00181 char *adin_netaudio_input_name();
00182 int NA_standby(int, char *);
00183 void NA_start();
00184 void NA_stop();
00185 int NA_read(SP16 *buf, int sampnum);
00186 
00187 /* adin/adin_file.c */
00188 boolean adin_file_standby(int freq, void *arg);
00189 boolean adin_file_begin(char *pathname);
00190 int adin_file_read(SP16 *buf, int sampnum);
00191 boolean adin_file_end();
00192 boolean adin_stdin_standby(int freq, void *arg);
00193 boolean adin_stdin_begin(char *pathname);
00194 int adin_stdin_read(SP16 *buf, int sampnum);
00195 char *adin_file_get_current_filename();
00196 char *adin_stdin_input_name();
00197 
00198 /* adin/adin_sndfile.c */
00199 #ifdef HAVE_LIBSNDFILE
00200 boolean adin_sndfile_standby(int freq, void *arg);
00201 boolean adin_sndfile_begin(char *pathname);
00202 int adin_sndfile_read(SP16 *buf, int sampnum);
00203 boolean adin_sndfile_end();
00204 char *adin_sndfile_get_current_filename();
00205 #endif
00206 
00207 /* adin/adin_tcpip.c */
00208 boolean adin_tcpip_standby(int freq, void *arg);
00209 boolean adin_tcpip_begin(char *pathname);
00210 boolean adin_tcpip_end();
00211 int adin_tcpip_read(SP16 *buf, int sampnum);
00212 boolean adin_tcpip_send_pause();
00213 boolean adin_tcpip_send_terminate();
00214 boolean adin_tcpip_send_resume();
00215 char *adin_tcpip_input_name();
00216 
00217 /* adin/zc-e.c */
00218 void init_count_zc_e(ZEROCROSS *zc, int length);
00219 void reset_count_zc_e(ZEROCROSS *zc, int c_trigger, int c_length, int c_offset);
00220 void free_count_zc_e(ZEROCROSS *zc);
00221 int count_zc_e(ZEROCROSS *zc, SP16 *buf,int step);
00222 void zc_copy_buffer(ZEROCROSS *zc, SP16 *newbuf, int *len);
00223 
00224 /* adin/zmean.c */
00225 void zmean_reset();
00226 void sub_zmean(SP16 *speech, int samplenum);
00227 
00228 /* adin/ds48to16.c */
00229 DS_BUFFER *ds48to16_new();
00230 void ds48to16_free(DS_BUFFER *ds);
00231 int ds48to16(SP16 *dst, SP16 *src, int srclen, int maxdstlen, DS_BUFFER *ds);
00232 
00233 #ifdef __cplusplus
00234 }
00235 #endif
00236 
00237 
00238 #endif /* __SENT_ADIN__ */