关于c语音,二进制问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语音,二进制问题?相关的知识,希望对你有一定的参考价值。
例如10000,第一位不是符号位吗,结果为什么是16而不是-0?,符号位该如何使用呢
二进制是要基于多少位来表示一个数来说的,不是如题中所说只看最高位。以整数为例解释如下:
c语言中能表示整数的类型有:
char: 有符号,8位,可以表示正数和负数;
int/long: 有符号,32位,可以表示正数和负数;
long long: 有符号,64位,可表示正数负数;
有unsigned修饰的是无符号,不能表示负数。
一、如果使用8位表示有符号数,那是最高位表示符号位。最高位是0表示正数,最高位是1表示负数。其它类型都是一样的都是最高位是符号位。正数使用原码表示,负数表示参考二。
二、负数是采用补码的方式表示的。为啥不用原码表示是有些原因。
1.原码表示不利于进行不同符号数的运算,计算机电路设计会更复杂;2.原码表示会出现两个0即0和-0都是0。补码是在原码基础上符号位不变,其余各位取反,再加1。 参考技术A 如果是无符号数第一个就不是符号位,就正常算,如果代表的是符号数第一位代表符号 负数为1,正数为0,这里应该是无符号数,所以是16 参考技术B 有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
从定义看,有符号数首先有位数,然后才可以定义符号位。
例如8位有符号数,符号位就是第八位,1xxxxxxx表示负数,0xxxxxxx表示正数。
16位有符号数,符号位就是第十六位,1xxxxxxxxxxxxxxx表示负数,0xxxxxxxxxxxxxxx表示正数。
10000如果不是5位正数(正常计算机没有五位二进制数),那么最高位就不是符号位。本回答被提问者采纳 参考技术C 2进制的意思是到2就向前进1位。1=1,2=10,3=11,4=100~~~~刚好16=100000..。至于什么符号位。你用符号位的话这个二进制算法不一样展示。。具体不清楚。毕竟我不懂C。。但常规说10000的二进制转换就应该是16. 参考技术D
进制:进制也就是进位制,是人们规定的一种进位方法、是一种计数方式。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
十进制二进制数码:0、1、2、3、4、5、6、7、8、9数码:0、1基数:10基数:2运算规律:逢十进一,借一当十运算规律:逢二进一,借一当二展开形式:101=1102+0101+1*100展开形式:101.1=122+021+120+12-1表示形式:十进制数可以不加注,也可以写成加注形式:如 (99)10 或99(10)或(99D)表示形式:二进制数10110011可以写成(10110011)2或10110011(2)或写成10110011B
Azure 语音识别 - 使用二进制/十六进制数据而不是 WAV 文件路径
【中文标题】Azure 语音识别 - 使用二进制/十六进制数据而不是 WAV 文件路径【英文标题】:Azure Speech Recognition - use binary / hexadecimal data instead of WAV file path 【发布时间】:2021-10-04 15:26:48 【问题描述】:我正在寻找一种使用 Azure 语音识别 API 的方法,将二进制/十六进制数据而不是 WAV 文件路径作为参数传递。
“raw_data”是一个十六进制数据,代表一个小的WAV文件:
raw_data = self.audio.get_wav_data()
保存到磁盘中的 WAV 文件(这不是我想要的):
main_dir = os.path.dirname(__file__)
wav_file = os.path.join(main_dir, 'output.wav')
with open(wav_file, 'wb') as f:
f.write(raw_data)
设置配置并使用 Azure 的 API 进行语音识别:
speech_config = speechsdk.SpeechConfig(subscription="<subscription>", region="westeurope")
speech_config.speech_recognition_language="pt-BR"
audio_config = speechsdk.AudioConfig(filename=wav_file)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
result = speech_recognizer.recognize_once_async().get()
user_request = result.text
【问题讨论】:
【参考方案1】:你可以使用推流
示例如下:
https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_sample.py
您可以在此处配置将用于识别的 Stream。
stream = speechsdk.audio.PushAudioInputStream()
audio_config = speechsdk.audio.AudioConfig(stream=stream)
示例是指读取波形文件并转换为二进制数据。相反,您可以使用 stream.read() 方法并将二进制数据加载到上述配置的 Stream 中
frames = wav_fh.readframes(n_bytes // 2)
print('read bytes'.format(len(frames)))
if not frames:
break
stream.write(frames)
【讨论】:
以上是关于关于c语音,二进制问题?的主要内容,如果未能解决你的问题,请参考以下文章