源码准备1.SenseVoicecpp2.ggml 模型源码https://codeload.github.com/ggerganov/ggml/zip/refs/heads/master环境工具准备1.cmake2.mingw64环境变量源码路径结构ggml-master.zip解压后放入SenseVoicecpp\sense-voice\csrc\third-party\ggml编译步骤1 回到 build 文件夹清空所有内容cmdcd /d 磁盘\asr_sencpp\SenseVoicecpp\build2.重新执行 cmakecmdcmake .. -G MinGW Makefiles3.编译cmdmingw32-make -j4一次成功编译过程cmake编译异常这是没有ggml下载即可编译后文件部分源码#ifndef SENSEVOICE_CPP_COMMON_H #define SENSEVOICE_CPP_COMMON_H #include cstdint #include string #include map #include set #include ggml-cpu.h #include ggml-cpp.h #include gguf.h #include sense-voice-frontend.h #ifdef __GNUC__ #define SENSEVOICE_DEPRECATED(func, hint) func __attribute__((deprecated(hint))) #elif defined(_MSC_VER) #define SENSEVOICE_DEPRECATED(func, hint) __declspec(deprecated(hint)) func #else #define SENSEVOICE_DEPRECATED(func, hint) func #endif #ifdef SENSEVOICE_SHARED #ifdef _WIN32 #ifdef SENSEVOICE_BUILD #define SENSEVOICE_API __declspec(dllexport) #else #define SENSEVOICE_API __declspec(dllimport) #endif #else #define SENSEVOICE_API __attribute__((visibility(default))) #endif #else #define SENSEVOICE_API #endif #define MIN(a, b) ((a) (b) ? (a) : (b)) #define MAX(a, b) ((a) (b) ? (a) : (b)) #if defined(_MSC_VER) #pragma warning(disable : 4244 4267) // possible loss of data #endif #if defined(GGML_BIG_ENDIAN) #include bit #include math.h #include ggml-alloc.h #include ggml-backend.h template typename T static T byteswap(T value) { return std::byteswap(value); } template float byteswap(float value) { return std::bit_castfloat(byteswap(std::bit_caststd::uint32_t(value))); } template typename T static void byteswap_tensor_data(ggml_tensor *tensor) { T *datum reinterpret_castT *(tensor-data); for (int i 0; i ggml_nelements(tensor); i) { datum[i] byteswap(datum[i]); } } static void byteswap_tensor(ggml_tensor *tensor) { switch (tensor-type) { case GGML_TYPE_I16: { byteswap_tensor_dataint16_t(tensor); break; } case GGML_TYPE_F16: { byteswap_tensor_dataggml_fp16_t(tensor); break; } case GGML_TYPE_I32: { byteswap_tensor_dataint32_t(tensor); break; } case GGML_TYPE_F32: { byteswap_tensor_datafloat(tensor); break; } default: { // GML_TYPE_I8 break; } } } #define BYTESWAP_VALUE(d) d byteswap(d) #define BYTESWAP_FILTERS(f) \ do { \ for (auto datum : f.data) { \ datum byteswap(datum); \ } \ } while (0) #define BYTESWAP_TENSOR(t) \ do { \ byteswap_tensor(t); \ } while (0) #else #define BYTESWAP_VALUE(d) \ do { \ } while (0) #define BYTESWAP_FILTERS(f) \ do { \ } while (0) #define BYTESWAP_TENSOR(t) \ do { \ } while (0) #endif #ifdef __GNUC__ #ifdef __MINGW32__ #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) __attribute__((format(gnu_printf, __VA_ARGS__))) #else #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) __attribute__((format(printf, __VA_ARGS__))) #endif #else #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) #endif #define SENSEVOICE_LOG_ERROR(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_ERROR, __VA_ARGS__) #define SENSEVOICE_LOG_WARN(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_WARN, __VA_ARGS__) #define SENSEVOICE_LOG_INFO(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_INFO, __VA_ARGS__) // define this to enable verbose trace logging - useful for debugging purposes #define SENSEVOICE_DEBUG #if defined(SENSEVOICE_DEBUG) #define SENSEVOICE_LOG_DEBUG(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_DEBUG, __VA_ARGS__) #else #define SENSEVOICE_LOG_DEBUG(...) #endif #define SENSEVOICE_ASSERT(x) \ do { \ if (!(x)) { \ SENSEVOICE_LOG_ERROR(SENSEVOICE_ASSERT: %s:%d: %s\n, __FILE__, \ __LINE__, #x); \ abort(); \ } \ } while (0) // // logging //人人皆为创造者共创方能共成长每个人都是使用者也是创造者是数字世界的消费者更是价值的生产者与分享者。在智能时代的浪潮里单打独斗的发展模式早已落幕唯有开放连接、创意共创、利益共享才能让个体价值汇聚成生态合力让技术与创意双向奔赴实现平台与伙伴的快速成长、共赢致远。原创永久分成共赴星辰大海原创创意共创、永久收益分成是东方仙盟始终坚守的核心理念。我们坚信每一份原创智慧都值得被尊重与回馈以永久分成锚定共创初心让创意者长期享有价值红利携手万千伙伴向着科技星辰大海笃定前行拥抱硅基 生命与数字智能交融的未来共筑跨越时代的数字文明共同体。东方仙盟拥抱知识开源共筑数字新生态在全球化与数字化浪潮中东方仙盟始终秉持开放协作、知识共享的理念积极拥抱开源技术与开放标准。我们相信唯有打破技术壁垒、汇聚全球智慧才能真正推动行业的可持续发展。开源赋能中小商户通过将前端异常检测、跨系统数据互联等核心能力开源化东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案让更多商家能够平等享受数字转型的红利。共建行业标准我们积极参与国际技术社区与全球开发者、合作伙伴共同制定开放协议 与技术规范推动跨境零售、文旅、餐饮等多业态的系统互联互通构建更加公平、高效的数字生态。知识普惠共促发展通过开源社区 、技术文档与培训体系东方仙盟致力于将前沿技术转化为可落地的行业实践赋能全球合作伙伴共同培育创新人才推动数字经济 的普惠式增长阿雪技术观在科技发展浪潮中我们不妨积极投身技术共享。不满足于做受益者更要主动担当贡献者。无论是分享代码、撰写技术博客还是参与开源项目 维护改进每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地我们携手在此探索硅基 生命为科技进步添砖加瓦。Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Dont just be the one reaping all the benefits; step up and be a contributor too. Whether youre tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. Were gonna team up and explore the whole silicon - based life thing, and in the process, well be fueling the growth of technology
SenseVoicecpp编译[AI人工智能(六十五)]—东方仙盟
发布时间:2026/6/21 14:55:01
源码准备1.SenseVoicecpp2.ggml 模型源码https://codeload.github.com/ggerganov/ggml/zip/refs/heads/master环境工具准备1.cmake2.mingw64环境变量源码路径结构ggml-master.zip解压后放入SenseVoicecpp\sense-voice\csrc\third-party\ggml编译步骤1 回到 build 文件夹清空所有内容cmdcd /d 磁盘\asr_sencpp\SenseVoicecpp\build2.重新执行 cmakecmdcmake .. -G MinGW Makefiles3.编译cmdmingw32-make -j4一次成功编译过程cmake编译异常这是没有ggml下载即可编译后文件部分源码#ifndef SENSEVOICE_CPP_COMMON_H #define SENSEVOICE_CPP_COMMON_H #include cstdint #include string #include map #include set #include ggml-cpu.h #include ggml-cpp.h #include gguf.h #include sense-voice-frontend.h #ifdef __GNUC__ #define SENSEVOICE_DEPRECATED(func, hint) func __attribute__((deprecated(hint))) #elif defined(_MSC_VER) #define SENSEVOICE_DEPRECATED(func, hint) __declspec(deprecated(hint)) func #else #define SENSEVOICE_DEPRECATED(func, hint) func #endif #ifdef SENSEVOICE_SHARED #ifdef _WIN32 #ifdef SENSEVOICE_BUILD #define SENSEVOICE_API __declspec(dllexport) #else #define SENSEVOICE_API __declspec(dllimport) #endif #else #define SENSEVOICE_API __attribute__((visibility(default))) #endif #else #define SENSEVOICE_API #endif #define MIN(a, b) ((a) (b) ? (a) : (b)) #define MAX(a, b) ((a) (b) ? (a) : (b)) #if defined(_MSC_VER) #pragma warning(disable : 4244 4267) // possible loss of data #endif #if defined(GGML_BIG_ENDIAN) #include bit #include math.h #include ggml-alloc.h #include ggml-backend.h template typename T static T byteswap(T value) { return std::byteswap(value); } template float byteswap(float value) { return std::bit_castfloat(byteswap(std::bit_caststd::uint32_t(value))); } template typename T static void byteswap_tensor_data(ggml_tensor *tensor) { T *datum reinterpret_castT *(tensor-data); for (int i 0; i ggml_nelements(tensor); i) { datum[i] byteswap(datum[i]); } } static void byteswap_tensor(ggml_tensor *tensor) { switch (tensor-type) { case GGML_TYPE_I16: { byteswap_tensor_dataint16_t(tensor); break; } case GGML_TYPE_F16: { byteswap_tensor_dataggml_fp16_t(tensor); break; } case GGML_TYPE_I32: { byteswap_tensor_dataint32_t(tensor); break; } case GGML_TYPE_F32: { byteswap_tensor_datafloat(tensor); break; } default: { // GML_TYPE_I8 break; } } } #define BYTESWAP_VALUE(d) d byteswap(d) #define BYTESWAP_FILTERS(f) \ do { \ for (auto datum : f.data) { \ datum byteswap(datum); \ } \ } while (0) #define BYTESWAP_TENSOR(t) \ do { \ byteswap_tensor(t); \ } while (0) #else #define BYTESWAP_VALUE(d) \ do { \ } while (0) #define BYTESWAP_FILTERS(f) \ do { \ } while (0) #define BYTESWAP_TENSOR(t) \ do { \ } while (0) #endif #ifdef __GNUC__ #ifdef __MINGW32__ #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) __attribute__((format(gnu_printf, __VA_ARGS__))) #else #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) __attribute__((format(printf, __VA_ARGS__))) #endif #else #define SENSE_VOICE_ATTRIBUTE_FORMAT(...) #endif #define SENSEVOICE_LOG_ERROR(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_ERROR, __VA_ARGS__) #define SENSEVOICE_LOG_WARN(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_WARN, __VA_ARGS__) #define SENSEVOICE_LOG_INFO(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_INFO, __VA_ARGS__) // define this to enable verbose trace logging - useful for debugging purposes #define SENSEVOICE_DEBUG #if defined(SENSEVOICE_DEBUG) #define SENSEVOICE_LOG_DEBUG(...) \ sense_voice_log_internal(GGML_LOG_LEVEL_DEBUG, __VA_ARGS__) #else #define SENSEVOICE_LOG_DEBUG(...) #endif #define SENSEVOICE_ASSERT(x) \ do { \ if (!(x)) { \ SENSEVOICE_LOG_ERROR(SENSEVOICE_ASSERT: %s:%d: %s\n, __FILE__, \ __LINE__, #x); \ abort(); \ } \ } while (0) // // logging //人人皆为创造者共创方能共成长每个人都是使用者也是创造者是数字世界的消费者更是价值的生产者与分享者。在智能时代的浪潮里单打独斗的发展模式早已落幕唯有开放连接、创意共创、利益共享才能让个体价值汇聚成生态合力让技术与创意双向奔赴实现平台与伙伴的快速成长、共赢致远。原创永久分成共赴星辰大海原创创意共创、永久收益分成是东方仙盟始终坚守的核心理念。我们坚信每一份原创智慧都值得被尊重与回馈以永久分成锚定共创初心让创意者长期享有价值红利携手万千伙伴向着科技星辰大海笃定前行拥抱硅基 生命与数字智能交融的未来共筑跨越时代的数字文明共同体。东方仙盟拥抱知识开源共筑数字新生态在全球化与数字化浪潮中东方仙盟始终秉持开放协作、知识共享的理念积极拥抱开源技术与开放标准。我们相信唯有打破技术壁垒、汇聚全球智慧才能真正推动行业的可持续发展。开源赋能中小商户通过将前端异常检测、跨系统数据互联等核心能力开源化东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案让更多商家能够平等享受数字转型的红利。共建行业标准我们积极参与国际技术社区与全球开发者、合作伙伴共同制定开放协议 与技术规范推动跨境零售、文旅、餐饮等多业态的系统互联互通构建更加公平、高效的数字生态。知识普惠共促发展通过开源社区 、技术文档与培训体系东方仙盟致力于将前沿技术转化为可落地的行业实践赋能全球合作伙伴共同培育创新人才推动数字经济 的普惠式增长阿雪技术观在科技发展浪潮中我们不妨积极投身技术共享。不满足于做受益者更要主动担当贡献者。无论是分享代码、撰写技术博客还是参与开源项目 维护改进每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地我们携手在此探索硅基 生命为科技进步添砖加瓦。Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Dont just be the one reaping all the benefits; step up and be a contributor too. Whether youre tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. Were gonna team up and explore the whole silicon - based life thing, and in the process, well be fueling the growth of technology