Apply for a voice changer plugin

As shown in the question, apply for a voice transformer that can be used for Jami and can change the voice of users in voice calls.
For example, we can turn our voices into robots, men, children, or women, and so on.

1 Like

Yes, but the developers said that they are currently focusing on Jami development, so they hope that Jami’s plug-ins can be developed by friends in the community, which of course can also increase the activity of the Jami community :sunrise:

1 Like

I’m looking for help in developing this plugin that can simply change the sound, so I first tried to understand the technical documentation of the jami plugin, and then I realized that some of the links in this article were no longer working. (Discover the Jami Plugin SDK and create your own plugins)
(https://git.jami.net/savoirfairelinux/jami-project/-/wikis/technical/7.1---Create-Plugin#sdk)

I want to try to write this plugin using the AI myself first, and if I can’t do that, then I’ll think of something else, I’m really not very good at programming.

I approached a friend who works as a program developer and invited him to develop jami’s voice changer, but he stated that jami’s plugin development is a cold business.
I think jami still needs voice changer plugin though, because there are some scenarios where we use jami mainly for privacy protection, where our voice is the part that needs to be protected very much.
Having a voice changer plugin can protect our voice from being recognized to a certain extent and avoid certain hassles, which is very good for security.

A friend has actually tried to develop a voice change plugin once and we installed it into jami but could not change the voice during a call. Is the current jami api not suitable for developing voice changing plugins?

1 Like

Is the code available online?

This plugin doesn’t work and even causes jami to crash on Android

Might there be people in the community who can help make it work if they can see the code?

java.lang.NullPointerException
at O2.S.a(SourceFile:3)
at androidx.recyclerview.widget.RecyclerView.t(SourceFile:180)
at androidx.recyclerview.widget.RecyclerView.onMeasure(SourceFile:54)
at android.view.View.measure(View.java:26253)
at P.f.b(SourceFile:515)
at D1.c.o(SourceFile:93)
at androidx.constraintlayout.widget.ConstraintLayout.n(SourceFile:1290)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(SourceFile:577)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26253)
at com.google.android.material.bottomsheet.BottomSheetBehavior.m(SourceFile:54)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(SourceFile:387)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(SourceFile:160)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26253)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7107)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:767)
at android.view.View.measure(View.java:26253)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3658)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2440)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2706)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2159)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8680)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:975)
at android.view.Choreographer.doCallbacks(Choreographer.java:799)
at android.view.Choreographer.doFrame(Choreographer.java:734)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:960)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:8110)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)

He doesn’t seem to want to share this flop he’s produced, and here’s a record of the crashes caused by this plugin.