MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / run

Method run

src/framework/audio/rnnoise.cpp:1225–1258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1223 }
1224
1225 RnnoiseSequenceRunOutput run(
1226 const float * features,
1227 int64_t frames,
1228 RnnoiseSequenceState & state) const {
1229 if (features == nullptr || frames <= 0 || frames > capacity_frames_) {
1230 throw std::runtime_error("RNNoise sequence graph input shape mismatch");
1231 }
1232 std::vector<float> padded_features(static_cast<size_t>(capacity_frames_ * kRnnoiseFeatures), 0.0f);
1233 std::copy(features, features + frames * kRnnoiseFeatures, padded_features.begin());
1234 ggml_backend_tensor_set(features_, padded_features.data(), 0, padded_features.size() * sizeof(float));
1235 ggml_backend_tensor_set(conv1_memory_in_, state.conv1_memory.data(), 0, state.conv1_memory.size() * sizeof(float));
1236 ggml_backend_tensor_set(conv2_memory_in_, state.conv2_memory.data(), 0, state.conv2_memory.size() * sizeof(float));
1237 ggml_backend_tensor_set(gru1_hidden_in_, state.gru1_hidden.data(), 0, state.gru1_hidden.size() * sizeof(float));
1238 ggml_backend_tensor_set(gru2_hidden_in_, state.gru2_hidden.data(), 0, state.gru2_hidden.size() * sizeof(float));
1239 ggml_backend_tensor_set(gru3_hidden_in_, state.gru3_hidden.data(), 0, state.gru3_hidden.size() * sizeof(float));
1240 const auto status = core::compute_backend_graph(weights_.backend.get(), graph_, plan_, "RNNoise sequence");
1241 ggml_backend_synchronize(weights_.backend.get());
1242 if (status != GGML_STATUS_SUCCESS) {
1243 throw std::runtime_error("RNNoise sequence GGML graph compute failed");
1244 }
1245 RnnoiseSequenceRunOutput output;
1246 output.gains.resize(static_cast<size_t>(capacity_frames_ * weights_.config.gain_bands));
1247 output.vad.resize(static_cast<size_t>(capacity_frames_));
1248 ggml_backend_tensor_get(gains_, output.gains.data(), 0, output.gains.size() * sizeof(float));
1249 ggml_backend_tensor_get(vad_, output.vad.data(), 0, output.vad.size() * sizeof(float));
1250 output.gains.resize(static_cast<size_t>(frames * weights_.config.gain_bands));
1251 output.vad.resize(static_cast<size_t>(frames));
1252 read_output(conv1_memory_out_, state.conv1_memory);
1253 read_output(conv2_memory_out_, state.conv2_memory);
1254 read_output(gru1_hidden_out_, state.gru1_hidden);
1255 read_output(gru2_hidden_out_, state.gru2_hidden);
1256 read_output(gru3_hidden_out_, state.gru3_hidden);
1257 return output;
1258 }
1259
1260private:
1261 static void read_output(ggml_tensor * tensor, std::vector<float> & values) {

Callers

nothing calls this directly

Calls 10

copyFunction · 0.85
ggml_backend_tensor_setFunction · 0.85
compute_backend_graphFunction · 0.85
ggml_backend_synchronizeFunction · 0.85
ggml_backend_tensor_getFunction · 0.85
beginMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
getMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected