I would like to do an application in android which translates speech from incoming call to text. Since i cant connect to mobile data while on call, i have to do the conversion offline.. Is it possible? Can I use any API or libraries to do it? Also is there any restrictions in tapping incoming voice? Please do reply..
Regular apps can record the phone owner side of the conversation, but to also record the remote user's voice, you need to have root access as well as a kernel patch.
As far as voice transcription, I don't know of any api you could use for free straight from the phone (assuming you get the recorded audio).
Related
Lets imagine i want to build some app for videoconferences or videomeeting that is chromecast-compatible.
So i can use my android device to connect meeting, after that i just click something like "cast to device" and get audio and video on my TV.
Also i noticed that skype, zoom, discord and all apps like this has not bulid-in chromecast support. So maybe it is impossible?
I tried to find something about that but but found nothing useful. I found zoom sdk, and chromecasst sdk, but not seen what actually i shoud cast. As i understood chromecast can send only media-content to reciever, but zoom sdk not actually provide some media-like links for conversation(videoconference).
So i want to know what are my steps to build my own chromecast-compatible meeting app and what may i want to use to develop app like that?
Or maybe someone know how can i use Zoom sdk to achive what i want?
When a sender device connects to a Chromecast, it has a limited set of "commands" it can send to the device.
There is no immediate way to send data other than those messages from the sender to the device - there is a 'custom' message, but that too only includes stringified JSON
The way this would have to work is too set up a stream of the screen/app you want to display via Chromecast and send a LOAD message to the Chromecast which will connect back to the sender (or a third party server where the video can be streamed from) and play it.
I'm not too confident this is going to work as intended though - there will be a significant delay between the sender and the Chromecast, and since the Chromecast has no mic, you will also have to use the mic of the sender and deal with the acoustic feedback.
I'm developing one Android application which would record video during calling when dialing some emergency numbers. Some of my android developer friends told it is not possible. Please help me if there is any way to achieve this
Normally, your app cannot know if some special number has been dialed. We can send a CALL Intent with some special number, and the Dialer system app will allow the end-user place the call. Or edit the number and place the call. It is also possible to write a broadcast handler that can be invoked when the end-user or some other app requested a call to some special number. But your app cannot perform the call itself.
If your app runs with superuser permissions (e.g. if the device is rooted), or if you replace the system Dial app with your custom one, then you certainly can control the camera while in call.
Also, if you forward the call over Internet, you can do what you want.
Finally, please note that even if you record the video during the phone call, you may not be able to live stream this video over the cellular network (some LTE networks do not turn off mobile data channel while in phone call).
I am working on an android app in which I want to implement voice changing functionality during a call. I have googled a lot and I found that it is only possible using VOIP.
I have a few questions about that task:
Although I found that it is only possible using VOIP, but still let me ask my doubt, can we change the pitch of voice during a call in Rooted or Non-rooted mobile, programmatically.
If this implemented using VOIP, then what I come to know is that we have to maintain a asterisk server for this. Then does the voice changing process happen on asterisk server or at mobile side and how?
You can do this on the server side with Asterisk. I do not know how you want your app to be structured, but if you go the Asterisk way, the app will become like a conference call. Like so:
You call a number (Asterisk server).
Asterisk server dials desired number.
Your voice packets are transformed on the server and sent on to the receiver.
If your telecom laws do not support it, the number that flashes on the receiver's phone will have to be the Asterisk server/exchanges.
I want to know in Android it is possible to transmit modulated voice like Ultra voice changer app does during a call. I have searched a lot but I only got results for how to change voice after recording. So, please reply me that is it possible to transmit changed voice at a time of call in Android.
It seems not possible. According to this XDA-Post "The calling screen is built within the phone". You can replace a dialer, but are not able to intercept the voice spoken during a call.
I cannot find any official API from android, which would make it possible to write your own "calling" App (which means record voice and send it).
The GSM full rate speech codec operates at 13 kbits/s and uses a Regular Pulse Excited (RPE) codec - This means that the microphone and speech detection in GSM is optimised for transmission across a Time Division Multiplexed 'digital' channel that is then modulated across the air interface using GMSK, a continuous-phase frequency-shift keying modulation scheme.
Noises other than the 'average' speech pattern are heavily distorted (or suppressed) - For instance DTMF (tones) are not well received on a device, and must be transmitted by the network core, but tones designed for the hearing impaired work well. Voice is shaped (filtered) on entry to the codec (microphone design) for best codec detection and reproduction at the other end.
In summary - It is not possible to 're-modulate' across the GSM system, because the entry point is not a radio (air interface), or even access the GSM digital frame. Your only access for a voice call is the GSM codec which is expecting a voice in a confined audio spectrum.
I know there are apps that act like voice changer where they change your voice and transmit that thru gsm voice. Maybe you can make an app that takes the voice then modulate it to something like phase shift keying or digital radio monodiale like what hams used for digital vhf, hf, dpmr, mototrbo radio communication and transmit the audio thru gsm voice channel then demodulate it back to normal voice but instead of straight forward modulation demodulation you can add pgp, aes, pre shared keys, blowfish or whatever encryption you like. I'm also intrested to see a project like this.
I think it would also be great if we could use this to transmit data thru voice gsm channel like the 56k dial up modems in the past instead of the gprs data channel allowing you to make data connection to other cellphone to transfer files without incurring additional data charges which is really good for subscribers with unlimited call plans.
See reference:
http://freedv.org/tiki-index.php
http://www.aprs.org
I plan to develop Android application which will encrypt/decrypt voice data such that parties can communicate using secure channel. So the question is: how to intercept voice/audio data during GSM call? Is it possible or not? Should I use Android NDK or something else?
In GSM it is not possible to encrypt the voice and send it through the voice channel due to channel characteristics. The signal sent through the voice channel has to be (similar to) human voice as vocoder (CELP) is used for channel coding.
So even if you had access to low level libraries and used it to encrypt voice to send it directly through the voice channel it would be not possible for the called party to receive and decrypt the signal.
Encrypted voice however could be sent through the data channel as data.
This is something that happens in the low level of the operating system. You wouldn't be able to access this information in the application level.
I suggest that you look into VOIP like SipDroid. I bet you'll be able to set it up to use encryption easily. (srtp instead of rtp)
Even if you SipDroid doesn't support this, it's is open source so you could add this feature.
Call recording is not yet possible on Android. See this feature request.
You can record your voice from microphone, but you can not record the sound of the other party. If you only want to record your voice use android.media.MediaRecorder.AudioSource.MIC
Simple Answer, NO!
if you are able to access low level libraries and used it to encrypt voice to send it directly through the voice channel off course it would not be possible for the called party to receive and decrypt the signal but if you modulate encrypted voice data and transform this voice data into speech like waveform and send through the voice channel of GSM then surely other party will receive and decrypt the voice.
I know there are apps that act like voice changer where they change your voice and transmit that thru gsm voice. Maybe you can make an app that takes the voice then modulate it to something like phase shift keying or digital radio monodiale like what hams used in vhf and hf radio communication and transmit the audio to gsm then demodulate it back to voice but instead of straight forward modulation demodulation you can add pgp, aes, or whatever encryption you like. I'm also intrested to see a project like this.
I think it would also be great if you could use this to transmit data thru voice gsm channel like the 56k modems in the past instead of the gprs channel.
See reference
http://freedv.org/tiki-index.php
http://www.aprs.org