pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)
我需要從我的模塊中調(diào)用Python函數(shù)并為其設(shè)置兩個(gè)參數(shù):int和array。在
現(xiàn)在我在調(diào)用這個(gè)函數(shù)的時(shí)候遇到了segfault,我不知道我做錯(cuò)了什么。有人能指出我的錯(cuò)誤在哪里嗎?在
函數(shù)在我的Python模塊中應(yīng)用程序副本. 如果我從Python代碼調(diào)用它,它會(huì)起作用:def get_model(rate, signal):
mfcc_train = MFCC().compute(rate, signal)
with open('mfcc_test', 'wb') as f:
pickle.dump(mfcc_train, f)
return clf()._fit(mfcc_train)
調(diào)用上面函數(shù)的C代碼。最后一個(gè)春天是“打電話前”
^{pr2}$
UPD:更新代碼,其中一個(gè)問(wèn)題已修復(fù)。但另一個(gè)問(wèn)題仍然存在。它在PyObject* pSamples = PyArray_SimpleNewFromData(1, dims, NPY_INT8, (void*)samples);行。我也不知道是怎么回事。在
和wav.h以防萬(wàn)一:#include
#include
#include
#include
#include
#include
typedef struct {
char chunk_id[4];
uint32_t chunk_size;
char format[4];
char fmtchunk_id[4];
uint32_t fmtchunk_size;
uint16_t audio_format;
uint16_t num_channels;
uint32_t sample_rate;
uint32_t byte_rate;
uint16_t block_align;
uint16_t bps;
char datachunk_id[4];
uint32_t datachunk_size;
}WavHeader;
WavHeader *header;
void wavread(char *file_name, int16_t **samples)
{
int fd;
if (!file_name)
errx(1, "Filename not specified");
if ((fd = open(file_name, O_RDONLY)) < 1)
errx(1, "Error opening file");
if (!header)
header = (WavHeader*)malloc(sizeof(WavHeader));
if (read(fd, header, sizeof(WavHeader)) < sizeof(WavHeader))
errx(1, "File broken: header");
if (strncmp(header->chunk_id, "RIFF", 4) ||
strncmp(header->format, "WAVE", 4))
errx(1, "Not a wav file");
if (header->audio_format != 1)
errx(1, "Only PCM encoding supported");
if (*samples) free(*samples);
*samples = (int16_t*)malloc(header->datachunk_size);
if (!*samples)
errx(1, "Error allocating memory");
if (read(fd, *samples, header->datachunk_size) < header->datachunk_size)
errx(1, "File broken: samples");
close(fd);
}
總結(jié)
以上是生活随笔為你收集整理的pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: redis 关系数据库怎么转换 和_re
- 下一篇: 面向多媒体 linux 版本,基于MX