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