• Android语音系列:编译Speex框架


    原文:http://www.badlogicgames.com/wordpress/?p=1726&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+PlanetAndroidCom+%28Planet+Android%29 

    JSpeex does not work very well on Android, encoding times are between 0.03 to 0.2 seconds for a 320 samples frame. Way to much for any real-time app (can you say in-game voice chat? :p). So i set out to get the native speex to compile for Android. A couple of steps are involved if you don’t want to go the configure road with ndk r5b.

    1. Download the latest speex source distri.
    2. Create your project’s folder, and a jni/ folder inside that folder
    3. Copy the libspeex/ and include/ folders from the speex distri to your jni/ folder. You should end up with $project/jni/libspeex and $project/jni/include
    4. Add the following thingy as your Android.mk file in your jni/ folder
    5. LOCAL_PATH := $(call my-dir)
       
      include $(CLEAR_VARS)
       
      LOCAL_MODULE    := libspeex
      LOCAL_CFLAGS = -DFIXED_POINT -DUSE_KISS_FFT -DEXPORT="" -UHAVE_CONFIG_H
      LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
       
      LOCAL_SRC_FILES :=  \
      ./libspeex/bits.c \
      ./libspeex/buffer.c \
      ./libspeex/cb_search.c \
      ./libspeex/exc_10_16_table.c \
      ./libspeex/exc_10_32_table.c \
      ./libspeex/exc_20_32_table.c \
      ./libspeex/exc_5_256_table.c \
      ./libspeex/exc_5_64_table.c \
      ./libspeex/exc_8_128_table.c \
      ./libspeex/fftwrap.c \
      ./libspeex/filterbank.c \
      ./libspeex/filters.c \
      ./libspeex/gain_table.c \
      ./libspeex/gain_table_lbr.c \
      ./libspeex/hexc_10_32_table.c \
      ./libspeex/hexc_table.c \
      ./libspeex/high_lsp_tables.c \
      ./libspeex/jitter.c \
      ./libspeex/kiss_fft.c \
      ./libspeex/kiss_fftr.c \
      ./libspeex/lpc.c \
      ./libspeex/lsp.c \
      ./libspeex/lsp_tables_nb.c \
      ./libspeex/ltp.c \
      ./libspeex/mdf.c \
      ./libspeex/modes.c \
      ./libspeex/modes_wb.c \
      ./libspeex/nb_celp.c \
      ./libspeex/preprocess.c \
      ./libspeex/quant_lsp.c \
      ./libspeex/resample.c \
      ./libspeex/sb_celp.c \
      ./libspeex/scal.c \
      ./libspeex/smallft.c \
      ./libspeex/speex.c \
      ./libspeex/speex_callbacks.c \
      ./libspeex/speex_header.c \
      ./libspeex/stereo.c \
      ./libspeex/vbr.c \
      ./libspeex/vq.c \
      ./libspeex/window.c
       
      include $(BUILD_SHARED_LIBRARY)
    6. Add the following thingy as your Application.mk file in the jni/ folder
      APP_ABI := armeabi armeabi-v7a

      This will compile binaries for the arm and arm-v7a cpus.

    7. Add the following thingy as a file called speex_config_types.h to the $project/jni/include/speex/ folder.
      #ifndef __SPEEX_TYPES_H__
      #define __SPEEX_TYPES_H__
      typedef short spx_int16_t;
      typedef unsigned short spx_uint16_t;
      typedef int spx_int32_t;
      typedef unsigned int spx_uint32_t;
      #endif

      最后一步 ndk-build 编译OK
      Compile thumb  : speex <= modes.c
      Compile thumb  : speex <= modes_wb.c
      Compile thumb  : speex <= nb_celp.c
      Compile thumb  : speex <= preprocess.c
      Compile thumb  : speex <= quant_lsp.c
      Compile thumb  : speex <= resample.c
      Compile thumb  : speex <= sb_celp.c
      Compile thumb  : speex <= scal.c
      Compile thumb  : speex <= smallft.c
      Compile thumb  : speex <= speex.c
      Compile thumb  : speex <= speex_callbacks.c
      Compile thumb  : speex <= speex_header.c
      Compile thumb  : speex <= stereo.c
      Compile thumb  : speex <= vbr.c
      Compile thumb  : speex <= vq.c
      Compile thumb  : speex <= window.c
      SharedLibrary  : libspeex.so
      Install        : libspeex.so => libs/armeabi-v7a/libspeex.so



  • 相关阅读:
    WPF换肤之八:创建3D浏览效果
    ADPlus
    由INotifyPropertyChanged,BindingList绑定引发的跨线程异常及其解决办法
    无服务器端的UDP群聊功能剖析(重构版本)
    A Short Guide to DBI[转]
    绑定到异步的ObservableCollection
    使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
    ORM查询语言(OQL)简介概念篇
    无需重新编译代码,在线修改表单
    LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
  • 原文地址:https://www.cnblogs.com/tinkl/p/2489217.html
Copyright © 2020-2023  润新知